簡體   English   中英

初學者Java編程if-else語句效率低下的代碼

[英]Beginner java programming if-else statements inefficient code

我的代碼是正確的,但是看起來太大了,我想知道它是否會更有效並且使用更少的變量,您有什么提示嗎?

樣本輸出

輸入三個分數: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>

您的這段代碼如下:

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');
}

被重復3次。 將其放入方法中。

在性能被證明之前,請不要擔心性能。 擔心閱讀和維護代碼有多容易。

代碼有2位讀者-編譯器和人員。 人類比編譯器更重要。

將最低分數存儲在變量中,例如lower_score。 並以(total-minimum_score)/ 2做平均值,這是最有效的

您可以使用以下代碼,這些代碼行更少,並且可以根據需要提供相同的輸出:

   public static void main(String[] args) {
    int score1, score2, score3, status;
    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;
    System.out.println("Average Score was:: " + average);

    if (score1 < score2 && score1 < score3) {
        status = 1;
        System.out.println("The lowest score was:: " + score1);
    } else if (score2 < score1 && score2 < score3) {
        status = 2;
        System.out.println("The lowest score was:: " + score2);
    } else {
        status = 3;
        System.out.println("The lowest score was:: " + score3);
    }

    if (status == 1) {
        average_no_lowest = (score2 + score3) / 2;
        System.out.println("The average without the lowest score is: "
                + average_no_lowest);
    } else if (status == 2) {
        average_no_lowest = (score1 + score3) / 2;
        System.out.println("The average without the lowest score is: "
                + average_no_lowest);
    } else {
        average_no_lowest = (score1 + score2) / 2;
        System.out.println("The average without the lowest score is: "
                + average_no_lowest);
    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM