gpt4 book ai didi

java - 不能在 Java 中使用多个 Scanner 对象

转载 作者:行者123 更新时间:2023-12-03 23:13:01 26 4
gpt4 key购买 nike

我最近开始学习Java。当我开始遇到错误时,我正在学习使用 Scanner 类获取用户输入。这是代码:

Scanner userInput1 = new Scanner(System.in);
String name = userInput1.nextLine();
System.out.println("Hi "+ name);
userInput1.close();

Scanner userInput2 = new Scanner(System.in);
int age = userInput2.nextInt();
System.out.println(age);

当我输入“Deadboy”时出现以下错误:

Hi Deadboy
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:862)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextInt(Scanner.java:2117)
at java.util.Scanner.nextInt(Scanner.java:2076)
at com.first.Main.main(Main.java:17)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)

Process finished with exit code 1

我无法输入“年龄”的值。但是,如果我注释行“userInput1.close()”,则代码有效。

问题是什么?

如果这个问题之前已经回答过,我很抱歉。我发现了一个类似的问题,但我不确定它的答案是否正是我要找的。

最佳答案

这里有几个问题。

首先,您不想关闭System.in 流。程序的其他部分可能正在使用它,您不想干扰它们的正常运行。

其次,创建多个 Scanner 对象没有任何好处。它只是从一个流中读取输入,拥有多个对该流的引用对您的操作没有必要或有益。

为此,解决这个问题很简单:

  • 仅使用附加到 System.in 的扫描程序的 一个 实例,并且
  • 删除 close() 方法调用。

关于java - 不能在 Java 中使用多个 Scanner 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29053580/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com