我最近才开始学习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();
}
}
当我尝试运行代码时,输入面板会出现(如预期的那样),但是一旦我提供了输入,屏幕上就会显示以下错误:“由于线程未挂起,评估失败。”为什么会这样呢?
答案 0 :(得分:0)
从命令行运行程序:
java test
,看看是否抛出相同的错误。如果不是,则表示问题出在您的IDE中。
答案 1 :(得分:0)
此错误消息通常是在运行VisualStudio并具有配置错误的Java工具链时创建的。
发生的事情是您尝试在调试模式下运行程序,而该模式无法停止程序的执行(通过挂起主线程)。因此程序运行完成,并且IDE引发错误“由于线程未挂起而导致评估失败”。
但是该错误是IDE的错误,而不是程序的错误。您的程序不会挂起任何Threads
,如果挂起,您将把它写到代码中。
检查是否已安装JDK(如果使用的是Java的较早版本),而不是JRE。另外,还要检查VS和编程支持工具(javac,javap等)之间的集成是否正确。
或者我最喜欢的答案,使用更好的开发环境,该环境与Java的成功息息相关,例如Netbeans
或Eclipse
。 VS与C#
的成功息息相关,并且存在一些最糟糕,最容易引起误解的错误消息(从历史上看,我认为这是为了支持他们的说法,即C#是Java而不是Java更好的语言。 Java的克隆)。