所以我的哨兵值为-1,当我输入该值时,它会让我退出程序。
我遇到的问题是,当我计算平均值并且我不想要它时,包含了值。
发生了什么的例子:( 8+ 5 + 3 + -1 / 4)
我想发生什么:(8 + 5 + 3 / 3)
do {
grade = Integer.parseInt(JOptionPane.showInputDialog("Enter a grade:"));
sum = sum + grade;
count = count + 1;
} while (grade != SENTINEL);
avg = sum/count;
JOptionPane.showMessageDialog(null,String.format("%.1f",avg));
答案 0 :(得分:1)
您可以稍微改变一下逻辑:
do {
grade = Integer.parseInt(JOptionPane.showInputDialog("Enter a grade:"));
if (grade == SENTINEL) {
break; // exit the loop upon hitting the SENTINEL value
}
sum = sum + grade; // only increase the sum for positive values
count = count + 1;
} while (true);
avg = sum/count;
JOptionPane.showMessageDialog(null,String.format("%.1f",avg));
答案 1 :(得分:0)
解决问题的一种简单方法是在if语句中将输入后的2行包装起来。更恰当的方法是在Tim指示时打破循环,以避免两次执行值比较。
do{....
if(grade != SENTINEL)
{
sum = sum + grade;
count = count + 1;
}
}while...