java - do while 循环没有正确中断java

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

最佳答案

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

enter image description here

  1. do-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) {
...

关于java - do while 循环没有正确中断java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60592488/

相关文章:

相同类型的 Java 泛型约束

Java for循环线程锁

java - 文字被截断?

java - 2010 年的 java 并发修改异常崩溃

java - 如何绘制/重绘/动画 (MVC)

java - JPA 标准 : build specification matching any id in collection

java - 如何自动化从大型数据库查询的测试? (导入或创建)

Java - JFrame 上只有两个圆角

java - 结合验证 PKCS#7 签名所需的所有任务

java - 是否可以使用 Karate 的 JUnit5 Fluent API 生成 Cucumber HTML 报告?