Java在嵌套if语句之后运行代码之前终止

时间:2018-02-18 19:14:00

标签: java if-statement

已解决 - 在寻找麻烦错误的过程中学到了一些教训,并在解决问题时寻找编程错误。

我是一名学生,1个月进入comp-sci 1,所以我的知识很少。下面是我的程序代码,该程序用户输入3个测试分数并找到平均值并告诉用户成绩。程序编译时没有错误,但是在if语句验证输入的第3个分数是在有效范围内之后,程序终止而不继续执行下面的嵌套if else语句块。我已经搜索过但无法找出问题所在,希望能在这里找到你们的帮助,谢谢。

grade1_string = JOptionPane.showInputDialog("Enter the first test score.");
grade1 = Integer.parseInt(grade1_string);

if (grade1 >= 0 && grade1 <= 110)//allowing for 10 pts extra credit
{
  grade2_string = JOptionPane.showInputDialog("Enter the second test score.");
  grade2 = Integer.parseInt(grade2_string);

  if (grade2 >= 0 && grade2 <= 110)
  {
     grade3_string = JOptionPane.showInputDialog("Enter the third test score.");
     grade3 = Integer.parseInt(grade3_string);

     if (grade3 >= 0 && grade3 <= 110)
     { 
        JOptionPane.showMessageDialog(null,"calcuating...");

        avrgGrade = (float)(grade1 * grade2 * grade3) / 3;

        if (avrgGrade >= 0 && avrgGrade < 60)
        {
           JOptionPane.showMessageDialog(null,"Sorry, your average is " + avrgGrade +
                                              ", an F");
        }
        else if (avrgGrade >= 60 && avrgGrade < 70)
        {
           JOptionPane.showMessageDialog(null,"Sorry, your average is " + avrgGrade +
                                              ", a D");
        }
        else if (avrgGrade >= 70 && avrgGrade < 80)
        {
           JOptionPane.showMessageDialog(null,"Not bad, your average is " + avrgGrade +
                                              ", a C");
        }
        else if (avrgGrade >= 80 && avrgGrade < 90)
        {
           JOptionPane.showMessageDialog(null,"Pretty good, your average is " + avrgGrade +
                                              ", a B");
        }
        else if (avrgGrade >= 90 && avrgGrade <= 110)
        {
           JOptionPane.showMessageDialog(null,"Way to go, your average is " + avrgGrade +
                                              ", an A");
        }
     }
     else
     {
        JOptionPane.showMessageDialog(null,"That is not a valid test score, " +
                                           "please run the program again to " +
                                           "calculate your average.");
     }  
  }
  else 
  {
     JOptionPane.showMessageDialog(null,"That is not a valid test score, please " +
                                        "run the program again to calculate your " +
                                        "average.");
  }   

最后是第三个有关未输入有效分数的相同信息(无法获得格式化权利)

1 个答案:

答案 0 :(得分:0)

在将代码发布到SO之前,请尝试遍历每一行并确保其有意义,并在必要时打印出每一行。这样你就会发现愚蠢的错误,而不是我们为你找到它们。关于愚蠢错误的话题,三个数的平均值的公式是(a + b + c)/ 3,而不是(a * b * c)/ 3。

例如,当您需要平均测试时,我很确定您想要:

int avrgGrade = (float)(grade1 + grade2 + grade3) / 3;

int avrgGrade = (float)(grade1 * grade2 * grade3) / 3;

这将解决您的问题。另外,我不知道你在哪里初始化你使用的所有变量,但是你可以在定义它们的地方初始化它们。