有没有更简单的方法来执行此 if 语句?

Is there an easier way to do this if statement?

我正在开发一个 java 程序,该程序采用输入的成绩给出输入的总数和平均值,但是我无法弄清楚如何计算当前输入的最高成绩我正在使用大量嵌套的 else if 语句,但必须有一种简单的方法来执行此操作,而不是键入 100 else if 语句这是我的代码。我在 else if 语句开始的地方添加了注释,以确定最高等级

//Jonathan Towell
//This program will take grade inputs and then display the amount of A's B's C's D's and F's
import javax.swing.JOptionPane;


public class Grades 
{
public static void main(String[] args)
{
    JOptionPane.showMessageDialog(null, "Welcome to Jonathan's Gradebook");
    int A = 0, B = 0, C = 0, D = 0, F = 0;
    int totalGrades = 0, grade = 0, averageGrade = 0, highestGrade = 0;
    while (grade >= 0)
    {
    grade = Integer.parseInt(JOptionPane.showInputDialog("Enter one grade followed by the enter key\n when finished enter -1"));
    if (grade <= 100 && grade >= 90)
    {
        A = A + 1;
        totalGrades = totalGrades + 1;
        averageGrade = averageGrade + grade;
        if (grade == 100) // Determines highest grade
        {
            highestGrade = 100;
        }
        else if (grade == 99)
        {
            highestGrade = 99;
        }
        else if (grade == 98)
        {
            highestGrade = 98;
        }
        else if (grade == 97)
        {
            highestGrade = 97;
        }
        else if (grade == 96)
        {
            highestGrade = 96;
        }
        else if (grade == 95)
        {
            highestGrade = 95;
        }
        else if (grade == 94);
        {
            highestGrade = 94;
        }
    }

    else if (grade > 100)
    {
        JOptionPane.showMessageDialog(null, "No extra credit for this assignment\n please enter a value less than 100");
    }
    else if (grade <= 89 && grade >= 80)
    {
        B = B + 1;
        totalGrades = totalGrades + 1;
        averageGrade = averageGrade + grade;
    }
    else if (grade <= 79 && grade >= 70)
    {
        C = C + 1;
        totalGrades = totalGrades + 1;
        averageGrade = averageGrade + grade;
    }
    else if (grade <= 69 && grade >= 60)
    {
        D = D + 1;
        totalGrades = totalGrades + 1;
        averageGrade = averageGrade + grade;
    }
    else if (grade <= 59 && grade >= 0)
    {
        F = F + 1;
        totalGrades = totalGrades + 1;
        averageGrade = averageGrade + grade;
    }
    }
    averageGrade = (averageGrade / totalGrades);
    JOptionPane.showMessageDialog(null, "Total number of grades entered was " + totalGrades + "\n The average grade was: " + averageGrade + " percent." + "\nA's: " + A + "\nB's: " + B + "\nC's: " + C + "\nD's: " + D + "\nF's: " + F + "\nThe highest grade earned was: " + highestGrade + " percent.");
    System.exit(0);
}


}

为了使其更易于管理,您可以考虑使用具有多态性的工厂模式,并在它们自己单独的 class.

中实现所有等级括号(if、else-if)

乔纳森,

你重复了很多代码。在每个 if 子句中重复相同的两行代码。为什么不把这两行代码放在最后的 if 子句之外。重复这两行: 总成绩 = 总成绩 + 1; averageGrade = averageGrade + 成绩;

关于巨大的 if 语句 if (grade == 100) // 确定最高等级 {

替换为: grade = (grade > highestGrade ? highestGrade : grade);// 确定最高等级

您还可以使用: highestGrade = Math.max(highestGrade, 等级);

我也重新排序了部分代码。您的 if 语句说 "if between 100 and 90" 然后转到 "if above 100"。那只是令人困惑。我将其排序为 "if above 100",然后是 "if between 100 and 90",更合乎逻辑。

最终代码应如下所示:

public class Grades 
{
    public static void main(String[] args)
    {
        JOptionPane.showMessageDialog(null, "Welcome to Jonathan's Gradebook");
        int A = 0, B = 0, C = 0, D = 0, F = 0;
        int totalGrades = 0, grade = 0, averageGrade = 0, highestGrade = 0;
        while (grade >= 0)
        {
        grade = Integer.parseInt(JOptionPane.showInputDialog("Enter one grade followed by the enter key\n when finished enter -1"));
        if (grade > 100) {
            JOptionPane.showMessageDialog(null, "No extra credit for this assignment\n please enter a value less than 100");
        } else if (grade <= 100 && grade >= 90) {
            A = A + 1;
            grade = (grade > highestGrade ? highestGrade : grade);// Determines highest grade
        } else if (grade <= 89 && grade >= 80) {
            B = B + 1;
        } else if (grade <= 79 && grade >= 70) {
            C = C + 1;
        } else if (grade <= 69 && grade >= 60) {
            D = D + 1;
        }  else if (grade <= 59 && grade >= 0) {
            F = F + 1;
        }
        totalGrades = totalGrades + 1;
        averageGrade = averageGrade + grade;
        averageGrade = (averageGrade / totalGrades);
        JOptionPane.showMessageDialog(null, "Total number of grades entered was " + totalGrades + "\n The average grade was: " + averageGrade + " percent." + "\nA's: " + A + "\nB's: " + B + "\nC's: " + C + "\nD's: " + D + "\nF's: " + F + "\nThe highest grade earned was: " + highestGrade + " percent.");
        System.exit(0);
    }

}

如果这对你来说更好,请告诉我。