首页 > 解决方案 > do while循环没有正确中断java

问题描述

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 部分,但它没有影响任何东西。我们看不到它有任何其他问题。

标签: java

解决方案


您的 do-while 工作正常 - 操作过程如下:

在此处输入图像描述

  1. 在 ado-while中,语句总是至少执行一次。所以你输入do { }, 并落入else条件,因为 999 大于 0 且不小于 100。
  2. 然后评估表达式grade != 999-> 这是错误的,因为grade == 999.
  3. 你不会再做do { }一次,然后从do-while.

要实现您想要的行为,您需要在 中添加一个附加语句do { },例如:

...
if (grade == 999) {
   break; //or print statement
}
else if (grade >= 0 && grade <= 100) {
...

推荐阅读