gpt4 book ai didi

java - 如何在 java 中关闭扫描仪?

转载 作者:搜寻专家 更新时间:2023-11-01 04:01:50 24 4
gpt4 key购买 nike

每当我运行以下代码时,

private static String input(String Message){
Scanner input_scanner = new Scanner(System.in);
System.out.print("\n" + Message);
String string = input_scanner.nextLine();
input_scanner.close();
return string;
}

我收到这个错误:

Exception in thread "main" java.util.NoSuchElementException: No line found
at java.util.Scanner.nextLine(Unknown Source)
at main.learn.input(learn.java:25)
at main.learn.main(learn.java:13)

我发现它与行 input_scanner.close(); 有关,但是当我删除它时,我收到警告说:

Resource leak: "input_scanner" is never closed"

无论如何我可以阻止错误发生并消除警告吗?

最佳答案

好吧,首先我建议你使用 API 来理​​解 Java 向你显示的异常。

阅读此内容以获取有关 NoSuchElementException 的更多信息:
http://docs.oracle.com/javase/7/docs/api/java/util/NoSuchElementException.html

当您使用扫描器、stringTokenizer、迭代器...时,您必须在尝试读取它们之前验证是否有更多元素要读取。如果你不这样做,你会得到那种类型的异常。

private static String input(String Message){
Scanner input_scanner = new Scanner(System.in);
System.out.print("\n" + Message);
if (input_scanner.hasNextLine()){
String string = input_scanner.nextLine();
}
input_scanner.close();
return string;

如果要读取多行,使用while (input_scanner.hasNextLine())

您的错误与键盘输入有关。阅读此内容以了解您是否在该部分做得很好: http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#hasNextLine%28%29

PS:建议您在完成扫描后使用 input_scanner.close() 关闭您的扫描仪。

关于java - 如何在 java 中关闭扫描仪?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29865150/

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