public class DoWhile1 {
private static int grade, total, sum, average;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
do {
System.out.println("Please enter a grade b/w 0-100:");
grade = sc.nextInt();
if (grade >= 0 && grade <= 100) {
total++;
sum = sum + grade;
System.out.println("Please enter another grade or 999 to break:");
} else {
System.out.println("Incorrect value, please reenter grade:");
}
} while (grade != 999);
average = sum/total;
}
}
这个循环应该在输入 999 时中断,但是当在中断之前输入时,它会从循环内的 else 输出错误消息。它不应该在中断之前输出任何内容。 我们尝试移动循环的 while 部分,但它没有影响任何东西。我们看不到它有任何其他问题。
最佳答案
您的 do-while 工作正常 - 操作过程如下:
- 在
do-while
中,语句总是至少执行一次。因此,您输入do { }
,并陷入else
条件,因为 999 大于 0 且不小于 100。 - 然后计算表达式
grade != 999
-> 这是错误的,因为grade == 999
。 - 您不必再次执行
do { }
并退出do-while
。
要实现您想要的行为,您需要在 do { }
中添加附加语句,例如:
...
if (grade == 999) {
break; //or print statement
}
else if (grade >= 0 && grade <= 100) {
...
关于java - do while 循环没有正确中断java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60592488/