Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 程序持续运行,但从未实际执行任何操作_Java - Fatal编程技术网

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

Java 程序持续运行,但从未实际执行任何操作,java,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

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

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)
这是我的代码,对于我有限的经验来说,并没有什么是不寻常的,而且我的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();
        }
    }

}
import java.util.Scanner;
公共类312easf2
{
公共静态void main(字符串[]args)
{
扫描仪键盘=新扫描仪(System.in);
int grade=0;//满足循环条件的初始值
双平均等级=0.0;
int max=keyboard.nextInt();
int最小值=最大值;
int next=keyboard.nextInt();
System.out.println(“输入一个非负整数(负停止):”;
while(next>=0);
{
如果(下一个>最大值)
max=next;
否则,如果(下一次<分钟);
min=下一个;
next=keyboard.nextInt();
}
}
}

编辑:我在回答中指出了一个语法问题,在程序正常运行之前,您仍然需要解决这个问题,但现在真正的问题在于您的前几行:

        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();
您的程序正在执行某些内容,但它什么也没说,并且仅当您停止时才打印错误,所有这些都是由于程序实现中的错误。然而,这不是一个语法错误;只是你忘了一些重要的事情


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


请特别注意分号,并再次尝试查看代码。或者,按照Gabe的建议使用调试器,这将使您更好地了解正在发生的事情。

我建议您使用一些具有代码分析功能的优秀IDE。这将使你的生活更轻松,并帮助你避免这些恼人的错误,这些错误会让你发疯,因为你只是犯了一个愚蠢的错误,无法找出问题所在

看看IntellijIDEA社区版(它是免费的)或Eclipse(但我不确定Eclipse中的自动代码分析,我不使用它)

附言

 while(next >= 0);

除去分号,它应该会做些什么。

除了分号,我想知道您是否意识到,正如您编写的程序,在打印消息“输入一个非负整数(负停止):”之前,该程序要求用户为max输入一个数字,为next输入另一个数字然后,下一步需要另一个数字,并进入循环。由于数字提示在循环之外,因此需要用户继续输入数字,而无需进一步打印

哇,在Java中,你可以用以数字开头的标识符命名类?试着使用调试器。你所需要做的就是去掉一个分号。实际上,他需要去掉两个分号。看看你前面的问题,你喜欢不必要的分号。尽量专注于语言结构,而不要过多地依赖IDE。IDE是为了节省经验丰富的开发人员不必要的工作,而不是代替理解语言。在调试器中单步执行代码以查看执行的内容将是有建设性的。@Kirk Woll:谢谢,这是我第一次尝试[家庭作业]答案:)非常感谢!下次我会更加注意的。你们都有学习如何使用调试器的好资源吗?@Bolt:我不明白为什么外部分号会像问题所说的那样阻止程序执行任何行。当然,程序不会按预期运行,但在出现问题之前,它应该使用两个值并请求另一个数字。因此,我怀疑Breedy没有意识到程序正在运行,而是在等待输入。我终于明白你的意思了+1并编辑了我的答案以供参考。