“由于线程未挂起而导致评估失败”-在我的代码上下文中这意味着什么?

时间:2018-12-23 18:50:22

标签: java java.util.scanner

我最近才开始学习Java,但我对Scanner类的工作方式有些困惑。我在程序中使用了Scanner类,现在我的代码在每次运行时都会引发错误。错误是“由于线程未挂起而导致评估失败”-在我的代码上下文中这意味着什么?

我开发了一个收集用户年龄的程序。为了确保用户提供号码,我正在使用方法.hasNextInt(),该方法将被连续检查,直到用户提供号码为止。如下:

import java.util.Scanner;

public class test{
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        while (!scan.hasNextInt()){
            scan.next();
        }

        int age = scan.nextInt();

        System.out.println("You are " + age);
        scan.close();
    }
}

当我尝试运行代码时,输​​入面板会出现(如预期的那样),但是一旦我提供了输入,屏幕上就会显示以下错误:“由于线程未挂起,评估失败。”为什么会这样呢?

2 个答案:

答案 0 :(得分:0)

从命令行运行程序: java test,看看是否抛出相同的错误。如果不是,则表示问题出在您的IDE中。

答案 1 :(得分:0)

此错误消息通常是在运行VisualStudio并具有配置错误的Java工具链时创建的。

发生的事情是您尝试在调试模式下运行程序,而该模式无法停止程序的执行(通过挂起主线程)。因此程序运行完成,并且IDE引发错误“由于线程未挂起而导致评估失败”。

但是该错误是IDE的错误,而不是程序的错误。您的程序不会挂起任何Threads,如果挂起,您将把它写到代码中。

检查是否已安装JDK(如果使用的是Java的较早版本),而不是JRE。另外,还要检查VS和编程支持工具(javac,javap等)之间的集成是否正确。

或者我最喜欢的答案,使用更好的开发环境,该环境与Java的成功息息相关,例如NetbeansEclipse。 VS与C#的成功息息相关,并且存在一些最糟糕,最容易引起误解的错误消息(从历史上看,我认为这是为了支持他们的说法,即C#是Java而不是Java更好的语言。 Java的克隆)。