程序运行持续,但从未实际执行任何操作

Bre*_*dly 2 java

我运行程序,但我的所有行都没有执行.当我告诉它停止时,它会打印一条红色的错误信息.

Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
Run Code Online (Sandbox Code Playgroud)

这是我的代码,在我的有限经验中似乎没有什么不同寻常的,我的IDE在编写时没有报告任何错误.

import java.util.Scanner;

public class 312easf2 
{

    public static void main(String[] args) 
    {
        Scanner keyboard = new Scanner(System.in);
        int grade = 0;  // initial value to satify loop condition
        double averageGrade = 0.0;
        int max = keyboard.nextInt();
        int min = max;
        int next = keyboard.nextInt();

        System.out.println("Enter a nonnegative integer (negative to stop): ");

        while(next >= 0);
        {
            if(next > max)
                max = next;
            else if(next < min);
                min = next;
            next = keyboard.nextInt();
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

Bol*_*ock 12

编辑:我在我的答案中指出了一个语法问题,在程序正常工作之前你需要修复它,但是现在真正的问题在于你的前几行:

        Scanner keyboard = new Scanner(System.in);
        int grade = 0;  // initial value to satify loop condition
        double averageGrade = 0.0;
        int max = keyboard.nextInt();
        int min = max;
        int next = keyboard.nextInt();
Run Code Online (Sandbox Code Playgroud)

你的程序正在执行某些操作,但它什么也没说,并且只在你停止时打印错误,这都是因为程序实现中的错误.然而,这不是语法错误; 只是你忘记了重要的事情.

Wcrousse在他的回答中解释了正在发生的事情.


那里 是一个语法问题您的代码中某处存在多个类似的语法问题,这些问题实际上是合法的语法,这就是您的IDE和编译器没有抱怨的原因.然而,它们往往是一个非常常见的错误,导致意外行为.

特别注意你的分号,并尝试再次查看你的代码.或者,像Gabe建议的那样使用你的调试器,这会让你更好地了解正在发生的事情.

  • 不错的主要答案. (3认同)