Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.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 有没有更简单的方法来实现这个if语句?_Java_If Statement - Fatal编程技术网

Java 有没有更简单的方法来实现这个if语句?

Java 有没有更简单的方法来实现这个if语句?,java,if-statement,Java,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'

我正在开发一个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);
}


}
//乔纳森·托威尔
//该程序将获取等级输入,然后显示A、B、C、D和F的数量
导入javax.swing.JOptionPane;
公营班级职系
{
公共静态void main(字符串[]args)
{
showMessageDialog(null,“欢迎来到Jonathan的成绩册”);
int A=0,B=0,C=0,D=0,F=0;
int TotalGrade=0,grade=0,averageGrade=0,highestGrade=0;
而(等级>=0)
{
grade=Integer.parseInt(JOptionPane.showInputDialog(“输入一个等级,完成后按Enter键输入-1”);
如果(等级=90)
{
A=A+1;
总等级=总等级+1;
平均等级=平均等级+等级;
如果(等级==100)//确定最高等级
{
最高等级=100;
}
否则,如果(等级==99)
{
最高等级=99;
}
否则,如果(等级==98)
{
最高等级=98;
}
否则,如果(等级==97)
{
最高等级=97;
}
否则,如果(等级==96)
{
最高等级=96;
}
否则,如果(等级==95)
{
最高等级=95;
}
否则,如果(等级==94);
{
最高等级=94;
}
}
否则,如果(等级>100)
{
JOptionPane.showMessageDialog(null,“此分配没有额外积分\n请输入小于100的值”);
}
否则,如果(等级=80)
{
B=B+1;
总等级=总等级+1;
平均等级=平均等级+等级;
}
否则,如果(等级=70)
{
C=C+1;
总等级=总等级+1;
平均等级=平均等级+等级;
}
否则,如果(等级=60)
{
D=D+1;
总等级=总等级+1;
平均等级=平均等级+等级;
}
否则,如果(等级=0)
{
F=F+1;
总等级=总等级+1;
平均等级=平均等级+等级;
}
}
averageGrade=(averageGrade/TotalGrade);
JOptionPane.showMessageDialog(null,“输入的分数总数为”+totalGrades+”\n平均分数为“+averageGrade+”百分比。”+”\n平均分数为“+A+”\nB:“+B+”\nC:“+C+”\nF:“+F+”\n获得的最高分数为“+highestGrade+”百分比。”);
系统出口(0);
}
}

> p>为了使其更易于管理,您可以考虑使用多态性的工厂模式,并将所有的级括号(如果,否则if)实现在它们自己的单独类中。

使之更易于管理,您可以考虑使用多态性的工厂模式,并具有所有的级别括号(如果,如果有的话)。为了使它更易于管理,可以考虑使用多态性的工厂模式,并将所有的级括号(如果,否则if)实现在它们自己的单独类中。

使这个更易于管理,您可以考虑使用多态性的工厂模式并具有所有的等级括号。(if,else if)在各自的类中实现。

乔纳森

您重复了很多代码。在每个if子句中,您都重复了相同的两行代码。为什么不在末尾的if子句之外重复这两行代码。这两行代码重复: 总等级=总等级+1; 平均等级=平均等级+等级

关于巨大的国际单项体育联合会声明 如果(等级==100)//确定最高等级 {

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

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


}
您还可以使用: 最高等级=数学最大值(最高等级,等级)

我还重新排序了部分代码。您的if语句说“if介于100和90之间”,然后转到“if高于100”。这太令人困惑了。我将其排序为“if高于100”,然后是“if介于100和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);
    }

}
公共课成绩
{
公共静态void main(字符串[]args)
{
showMessageDialog(null,“欢迎来到Jonathan的成绩册”);
int A=0,B=0,C=0,D=0,F=0;
int TotalGrade=0,grade=0,averageGrade=0,highestGrade=0;
而(等级>=0)
{
grade=Integer.parseInt(JOptionPane.showInputDialog(“输入一个等级,完成后按Enter键输入-1”);
如果(等级>100){
JOptionPane.showMessageDialog(null,“此分配没有额外积分\n请输入小于100的值”);
}否则,如果(等级=90){
A=A+1;
等级=(等级>最高等级?最高等级:等级);//确定最高等级
}否则,如果(等级=80){
B=B+1;
}否则,如果(等级=70){
C=C+1;
}否则,如果(等级=60){
D=D+1;
}否则,如果(等级=0){
F=F+1;
}
总等级=总等级+1;
平均等级=平均等级+等级;
averageGrade=(averageGrade/TotalGrade);
JOptionPane.showMessageDialog(null,“输入的分数总数为”+totalGrades+”\n平均分数为“+averageGrade+”百分比。”+”\n平均分数为“+A+”\nB:“+B+”\nC:“+C+”\nF:“+F+”\n获得的最高分数为“+highestGrade+”百分比。”);
系统出口(0);
}
}
如果这对你更合适,请告诉我。

乔纳森

你是