【问题标题】:Any advice or teaching to give to increase efficiency in this simple program?有什么建议或教学可以提高这个简单程序的效率吗?
【发布时间】:2020-12-09 02:54:54
【问题描述】:

我创建了一个非常简单的程序,它提示用户输入 3 个整数,然后确定输入的变量是否创建定义的三角形。是否有任何提示或建议可以简化这一点以提高效率?这是我为自己提出的练习。我只编码了 6 个月,就效率而言还没有达到,所以任何帮助或建议都会很棒。谢谢。

import java.util.*;

public class Test1 
{
    public static void main(String[] args)
    {
        int[] triangleInput = EnterSides();
    
        DisplayArray(triangleInput);
        DetermineValidTriangle(triangleInput);
    }

    public static int[] EnterSides()
    {
        Scanner keyboard = new Scanner(System.in);
    
        int[] triangleInput = new int[3];
        final int numOfSides = 3;
    
        System.out.println("Please enter " + numOfSides + " integers: ");
        for(int x = 0; x < triangleInput.length; ++x)
        {
            triangleInput[x] = keyboard.nextInt();
        }
        return triangleInput;
    }

    public static void DisplayArray(int[] userInput)
    {
        int[] triangleInput = userInput;
    
        System.out.print("You have entered: " + Arrays.toString(triangleInput));
            
        System.out.println();
        System.out.println();
        System.out.println("Side A of triangle is " + triangleInput[0] + ", Side B of triangle is " + 
    triangleInput[1] + ", and Side C of triangle is " + triangleInput[2]);
    }

    public static void DetermineValidTriangle(int[] userInput)
    {
        int[] triangleInput = userInput;
        boolean isTriangle = false;
    
        if(triangleInput[0] + triangleInput[1] > triangleInput[2])
            if(triangleInput[1] + triangleInput[2] > triangleInput[0])
            {
                 if(triangleInput[0] + triangleInput[2] > triangleInput[1])
                {
                     isTriangle = true;
                }
            }
    
        System.out.println();
        if(isTriangle)
            System.out.println("Successful triangle has been built!");
        else
            System.out.println("Sorry, Unsuccessful triangle. The requirement for a triangle is A + B 
is greater than C. B + C is greater than A, and A + C is greater than B.");
    }

}

【问题讨论】:

  • 请解释一下“效率”是什么意思。
  • @tgdavies 对缺乏澄清表示歉意。我所说的“效率”是指代码中可以缩短但仍能产生所需功能的任何区域。在更广泛的意义上,更少的代码行数。
  • 简洁是一个更好的词。效率通常用于意味着更少的时间或内存使用。
  • 糟糕,我遗漏了 2*:您只需要一次计算:A + B + C 必须 > 2*MAX(A,B,C)

标签: java arrays performance


【解决方案1】:

是的,删除所有内容,然后将其替换为:

import java.util.Scanner;
//Do not use "import java.util.*;" this will import the entire library in java.util

public class Test1
{

    public static void main()
    {
        Scanner keyboard = new Scanner(System.in);
        int trianglePoint1X = keyboard.nextInt();
        int trianglePoint1Y = keyboard.nextInt();
        int trianglePoint2X = keyboard.nextInt();
        int trianglePoint2Y = keyboard.nextInt();
        int trianglePoint3X = keyboard.nextInt();
        int trianglePoint3Y = keyboard.nextInt();
        //No Arrays, they are unneccessary
        //No Checks, the triangle does not need to be checked to confirm it's a triangle, the user should have freedom to set points
        //Triangle should have it's corners stored in memory instead of it's sides
    }

    public void drawTriangle()
    {
        //connect triangle point 1 with 2
        //connect triangle point 2 with 3
        //connect triangle point 3 with 1   
    }
}

【讨论】:

  • 首先,您错过了 OP 代码的作用。其次, * 导入很好——它使编译器可以使用名称,仅此而已。
  • 我没有错过重点,它以一种非常糟糕的方式创建了一个三角形并进行了不必要的检查。所以你告诉我进口不进口?
  • 请阅读该程序的功能。检查和存储边的原因是由于三角形不等式定理,该定理指出三角形的任何两条边之和必须大于第三条边的度量。另外,当您可以创建一个数组时,为什么还要创建 3 个单独的变量?数组的重点是在一个集合中存储相同的数据类型。
  • 如果您存储三角形的 3 个角位置而不是 3 个边,则不会遇到此问题。 (应该是trianglePoint1X,trianglePoint1Y,trianglePoint2X,trianglePoint2Y,trianglePoint3X,trianglePoint3Y),我没有正确写在代码中,我现在修复它。
  • 这个答案忽略了任务是通过边长而不是角坐标来指定三角形这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多