Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我怎样才能提高效率?_Java_Performance_Iteration - Fatal编程技术网

Java 我怎样才能提高效率?

Java 我怎样才能提高效率?,java,performance,iteration,Java,Performance,Iteration,我的程序根据整数输入的比较给出字符串答案。有没有一种更有效的方法来实现这一点,而不是分别提示用户3次并分别调用numberVerify 3次?我该怎么做?对Java非常陌生 public static void main(String[] args) { // TODO code application logic here // declare variables int number=0; System.out.println("Enter the first

我的程序根据整数输入的比较给出字符串答案。有没有一种更有效的方法来实现这一点,而不是分别提示用户3次并分别调用numberVerify 3次?我该怎么做?对Java非常陌生

public static void main(String[] args) {
    // TODO code application logic here
    // declare variables
    int number=0;
    System.out.println("Enter the first integer: ");
    int number1 = numberVerify(number);
    System.out.println("Enter the second integer: ");
    int number2 = numberVerify(number);
    System.out.println("Enter the third integer: ");
    int number3 = numberVerify(number);
    String compare = comparison(number1, number2, number3);
    printer(compare);
}
public static int numberVerify(int number){
    Scanner in = new Scanner(System.in);
     if(in.hasNextInt()){
        number = in.nextInt();
    }

    else{

        System.out.println("Error! Input must be an integer!");   

        System.out.println("");

        return numberVerify(number);

    }
    return number;
}

public static String comparison(int number1, int number2, int number3){
    String answer;
    if(number1 == number2 && number1 == number3)
    {       
        answer = "all the same";
    }
    else if(number1 != number2 && number1 != number3)
    {       
        answer = "all different";
    }
    else
    {       
        answer = "neither";
    }
    return answer;
}

public static void printer(String answer){
    System.out.println(answer);
}

使用int数组和for循环,例如:

int [] values = new int[3];
for(int i =0; i<3; i++){
  values[i] = in.nextInt();
}
int[]值=新的int[3];

for(int i=0;i使用int数组和for循环,例如:

int [] values = new int[3];
for(int i =0; i<3; i++){
  values[i] = in.nextInt();
}
int[]值=新的int[3];

对于(inti=0;i,可以使用数组和少量其他修改来提高效率

这是代码

导入java.util.Scanner

公共类有效{

private static String comparison(int[] numberArray) {
    String answer;
    if(numberArray[0] == numberArray[1] && numberArray[1] == numberArray[2]){
        answer = "all the same";
    }else if(numberArray[0] != numberArray[1] && numberArray[1] != numberArray[2]){
        answer = "all different";
    }else{
        answer = "neither";
    } return answer;

}

public static void main(String[] args) {

    int[] numberArray = new int[3];
    Scanner scan = new Scanner(System.in);
    System.out.println("Enter the numbers");
    for(int i=0;i<=numberArray.length-1;i++){
        if(scan.hasNextInt()){
            numberArray[i]=scan.nextInt();
        }else{
            System.out.println("Error! Input must be an integer!");   
        }
    }       
    String compare = comparison(numberArray);
    System.out.println(compare);


}
私有静态字符串比较(int[]numberArray){
字符串回答;
if(numberraray[0]==numberraray[1]&&numberraray[1]==numberraray[2]){
回答:“都一样”;
}如果(numberraray[0]!=numberraray[1]&&numberraray[1]!=numberraray[2]){
回答=“完全不同”;
}否则{
回答=“两者都不”;
}返回答案;
}
公共静态void main(字符串[]args){
int[]numberArray=新int[3];
扫描仪扫描=新扫描仪(System.in);
System.out.println(“输入数字”);

对于(inti=0;i,可以使用数组和少量其他修改来提高效率

这是代码

导入java.util.Scanner

公共类有效{

private static String comparison(int[] numberArray) {
    String answer;
    if(numberArray[0] == numberArray[1] && numberArray[1] == numberArray[2]){
        answer = "all the same";
    }else if(numberArray[0] != numberArray[1] && numberArray[1] != numberArray[2]){
        answer = "all different";
    }else{
        answer = "neither";
    } return answer;

}

public static void main(String[] args) {

    int[] numberArray = new int[3];
    Scanner scan = new Scanner(System.in);
    System.out.println("Enter the numbers");
    for(int i=0;i<=numberArray.length-1;i++){
        if(scan.hasNextInt()){
            numberArray[i]=scan.nextInt();
        }else{
            System.out.println("Error! Input must be an integer!");   
        }
    }       
    String compare = comparison(numberArray);
    System.out.println(compare);


}
私有静态字符串比较(int[]numberArray){
字符串回答;
if(numberraray[0]==numberraray[1]&&numberraray[1]==numberraray[2]){
回答:“都一样”;
}如果(numberraray[0]!=numberraray[1]&&numberraray[1]!=numberraray[2]){
回答=“完全不同”;
}否则{
回答=“两者都不”;
}返回答案;
}
公共静态void main(字符串[]args){
int[]numberArray=新int[3];
扫描仪扫描=新扫描仪(System.in);
System.out.println(“输入数字”);

对于(inti=0;i我不知道更有效或更可读的方法,似乎已经是这样了。但我可以把它缩短

public static void main(String[] args) {
    // TODO code application logic here
    // declare variables
    Scanner in = new Scanner(System.in);
    int[] numbers = new int[3];
    String[] labels = {"first","second","third"};
    for(int i=0; i<3; i++)
    {
        System.out.print("Enter the " + labels[i] + " integer: ");
        numbers[i] = in.nextInt();
    }
    System.out.println(comparison(numbers[0],numbers[1],numbers[2]));
}

public static String comparison(int number1, int number2, int number3){
    String answer;
    if(number1 == number2 && number1 == number3)
    {       
        answer = "all the same";
    }
    else if(number1 != number2 && number1 != number3 && number2 != number3)
    {       
        answer = "all different";
    }
    else
    {       
        answer = "neither";
    }
    return answer;
}
publicstaticvoidmain(字符串[]args){
//此处的TODO代码应用程序逻辑
//声明变量
扫描仪输入=新扫描仪(系统输入);
int[]数字=新的int[3];
字符串[]标签={“第一”、“第二”、“第三”};

对于(inti=0;i我不知道更有效或更可读的方法,似乎已经是这样了。但我可以把它缩短

public static void main(String[] args) {
    // TODO code application logic here
    // declare variables
    Scanner in = new Scanner(System.in);
    int[] numbers = new int[3];
    String[] labels = {"first","second","third"};
    for(int i=0; i<3; i++)
    {
        System.out.print("Enter the " + labels[i] + " integer: ");
        numbers[i] = in.nextInt();
    }
    System.out.println(comparison(numbers[0],numbers[1],numbers[2]));
}

public static String comparison(int number1, int number2, int number3){
    String answer;
    if(number1 == number2 && number1 == number3)
    {       
        answer = "all the same";
    }
    else if(number1 != number2 && number1 != number3 && number2 != number3)
    {       
        answer = "all different";
    }
    else
    {       
        answer = "neither";
    }
    return answer;
}
publicstaticvoidmain(字符串[]args){
//此处的TODO代码应用程序逻辑
//声明变量
扫描仪输入=新扫描仪(系统输入);
int[]数字=新的int[3];
字符串[]标签={“第一”、“第二”、“第三”};

对于(inti=0;i效率在这里是无关的

用户需要几秒钟来输入数字。操作系统可能需要几毫秒来进行键盘事件处理、屏幕重画等。您的Java应用程序需要几微秒或更少的时间来进行决策。您为减少微秒组件而付出的任何努力都是白费力气

如果这里有需要解决的问题(我不是说有),它们将是:

  • 使用户界面易于使用

  • 编写代码以便易于阅读和维护

  • 将代码编写为“优雅的”…这不一定与前面的相同


更新-显然,您实际上对简化和/或减小代码的大小感兴趣

首先,这不是大多数人所说的效率(事实上,我认为花时间改进足够好的代码是对时间的低效利用)

其次,简单性和代码大小不是一回事。大多数人(程序员)会说简单代码是易于理解的代码……对于普通程序员来说。通常,一个问题的更简洁的解决方案实际上很难理解。(以@rby的代码为例,如果您需要在不测试它的情况下确保它是正确的,那么您需要非常仔细地阅读它。)

最后,专业软件工程师遵循的一般原则是,代码必须“足够好,但不能更好”1.花时间把程序做得比实际更好是在浪费时间,而且可能会让你/你的客户/你的雇主花钱


1-目的可能包括性能标准、可读性/可维护性、通用性/可恢复性和各种特定的正确性标准。但情况并非如此。通常,代码是为许多标准不相关甚至适得其反的环境编写的。但我离题了….

效率是不可改变的这里有蚂蚁

用户需要几秒钟来输入数字。操作系统可能需要几毫秒来进行键盘事件处理、屏幕重画等。您的Java应用程序需要几微秒或更少的时间来进行决策。您为减少微秒组件而付出的任何努力都是白费力气

如果这里有需要解决的问题(我不是说有),它们将是:

  • 使用户界面易于使用

  • 编写代码以便易于阅读和维护

  • 将代码编写为“优雅的”…这不一定与前面的相同


更新-显然,您实际上对简化和/或减小代码的大小感兴趣

首先,这不是大多数人所说的效率(事实上,我认为花时间改进足够好的代码是对时间的低效利用)

其次,简单性和代码大小不是一回事。大多数人(程序员)会说简单代码是易于理解的代码……对于普通程序员来说。通常,一个问题的更简洁的解决方案实际上很难理解