已解决 - 在寻找麻烦错误的过程中学到了一些教训,并在解决问题时寻找编程错误。
我是一名学生,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.");
}
最后是第三个有关未输入有效分数的相同信息(无法获得格式化权利)
答案 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;
这将解决您的问题。另外,我不知道你在哪里初始化你使用的所有变量,但是你可以在定义它们的地方初始化它们。