初学java编程if-else语句效率低下的代码

0 java performance if-statement

我的代码是正确的,但它看起来太大了.我想知道它是否可以更高效,变量更少.你有任何提示吗?谢谢

样本输出

输入三个分数:87 42 94

得分最低的是:42
没有得分最低的平均分是:90.5
等级是:A

<code>
import java.util.Scanner;
public class GradeAverager
{

public static void main(String[] args) 
    {
       int score1,score2,score3;
       double average,average_no_lowest;

       Scanner keyboard = new Scanner(System.in);
       System.out.print("Enter three scores: ");
       score1 = keyboard.nextInt();
       score2 = keyboard.nextInt();
       score3 = keyboard.nextInt();

       average = (score1 + score2 + score3) / 3.0;

       System.out.println();
       System.out.println("The average is: " + average);


       if (score1 < score2 && score1 < score3)
             System.out.println("The lowest score was:" + score1);
       else if (score2 < score1 && score2 < score3)
             System.out.println("The lowest score was:" + score2);
       else if (score3 < score1 && score3 < score2)
             System.out.println("The lowest score was:" + score3);



       if (score1 < score2 && score1 < score3){
             average_no_lowest = (score2 + score3)/2.0; 
             System.out.println("The average without the lowest score is: " + average_no_lowest);
             if(average_no_lowest > 90)
                  System.out.print('A');
             else if(average_no_lowest < 90 && average_no_lowest > 80 )
                  System.out.print('B');
             else if(average_no_lowest > 70 && average_no_lowest < 80)
                  System.out.print('C'); 
             else
                  System.out.print('D');
             }
       else if (score2 < score1 && score2 < score3){
             average_no_lowest = (score1 + score3)/2.0;
             System.out.println("The average without the lowest score is: " + average_no_lowest);
             if(average_no_lowest > 90)
                  System.out.print('A');
             else if(average_no_lowest < 90 && average_no_lowest > 80 )
                  System.out.print('B');
             else if(average_no_lowest > 70 && average_no_lowest < 80)
                  System.out.print('C'); 
             else
                  System.out.print('D');
             }
       else if (score3 < score1 && score3 < score2){
             average_no_lowest =(score1 + score3)/2.0;
             System.out.println("The average without the lowest score is: " + (score1 + score3)/2.0);
             if(average_no_lowest > 90)
                  System.out.print('A');
             else if(average_no_lowest < 90 && average_no_lowest > 80 )
                  System.out.print('B');
             else if(average_no_lowest > 70 && average_no_lowest < 80)
                  System.out.print('C'); 
             else
                  System.out.print('D');     
             }

    }
}
</code>
Run Code Online (Sandbox Code Playgroud)

Ste*_*art 5

你读的代码部分

if(average_no_lowest > 90)
    System.out.print('A');
else if(average_no_lowest < 90 && average_no_lowest > 80 )
    System.out.print('B');
else if(average_no_lowest > 70 && average_no_lowest < 80)
    System.out.print('C'); 
else
    System.out.print('D');
}
Run Code Online (Sandbox Code Playgroud)

重复3次.把它放进一个方法.

在经过验证的问题之前,不要担心性能问题.担心阅读和维护代码是多么容易.

代码有2个受众 - 编译器和人类.人类比编译器更重要.