Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.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.util.NoSuchElementException_Java_Java.util.scanner - Fatal编程技术网

“线程中的异常”;“主要”;读取用户输入时的java.util.NoSuchElementException

“线程中的异常”;“主要”;读取用户输入时的java.util.NoSuchElementException,java,java.util.scanner,Java,Java.util.scanner,我正在尝试使用扫描仪从用户处读取输入数据类型如下的值: int String String String int 但我一直在犯这样的错误: 线程“main”java.util.NoSuchElementException中出现异常 at java.util.Scanner.throwFor(Scanner.java:907) at java.util.Scanner.next(Scanner.java:1416) at Solution.main(Solution.java:22) wh

我正在尝试使用扫描仪从用户处读取输入数据类型如下的值:

int
String
String
String
int
但我一直在犯这样的错误:

线程“main”java.util.NoSuchElementException中出现异常

at java.util.Scanner.throwFor(Scanner.java:907)

at java.util.Scanner.next(Scanner.java:1416)

at Solution.main(Solution.java:22)

while循环中出现这种情况的原因是什么?

我不知道如何回答,因为您似乎正在尝试从文件读取,但代码是为从控制台读取而生成的。

尝试以下操作:

Scanner sc = new Scanner(System.in);
while (true) {
  int i= sc.nextInt();
  String c = sc.next();
  String e = sc.next();
  String f = sc.next();
  int g = sc.nextInt();
}

您可以摆脱while循环,除非您想继续获取这些输入,但它将一直运行,直到您给它提供无效输入(它将不稳定地运行)

试试这个:

Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
String c = sc.next();
String e = sc.next();
String f = sc.next();
int g = sc.nextInt();
// print out all use input
System.out.println(i + " " + c + " " + e + " " + f + " " + g);

您的输入是您提供了一个示例输入,还是在您声明的顺序中始终有5个元素?如果是这样,您不需要while循环,因为它将尝试读取第6个元素,但异常似乎来自对next()的一个调用。你能提供一个完整的运行示例吗?一个不完整的片段很难理解完整的上下文。@DickChesterwood数据可以在5秒内更改。也许一个输入有10个,另一个有25个,等等。//如果我们是在输入的末尾,那么NoTouchElement;//如果仍有输入,那么InputMismatchWhon不是无限while循环的结果吗?是的,但这与您在特定条件下从前面的代码alsoOr获得的结果相同。您可以使用break语句中断循环,也可以在while条件下使用布尔变量
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
String c = sc.next();
String e = sc.next();
String f = sc.next();
int g = sc.nextInt();
// print out all use input
System.out.println(i + " " + c + " " + e + " " + f + " " + g);