我正在使用以下代码(我希望),它工作正常,我正在采取多个输入,名称,地址等。我也使用它cin()
来按任何关键功能。它以某种方式被打破并按照预期停止工作。
public class A {
Scanner s = new Scanner(System.in);
public String cin() {
return s.nextLine();
}
}
抛出的错误如下
Exception in thread "main" java.util.NoSuchElementException: No line found
at java.util.Scanner.nextLine(Scanner.java:1540)
我试着用s.hasNext()
和s.hasNextLine()
,它没有进入状态,因此没有输入来自用户的拍摄。
我知道这是非常基本的,我即将完成我的工作,这个突然的问题让我归零。我也尝试了循环方式但是陷入了无限循环。
是否可以在没有 exception
或没有输入的情况下输入skipping
,我想要一条忽略以前的东西并强行从用户那里获取输入的行?
请注意我cin()
在需要输入的整个应用程序中使用(并且它正在工作)。
可能性:
很奇怪 我cin()
在写这行之前找到了另外一个地方
try(Scanner scanner = new Scanner(System.in)) {
}
我从试用口袋中删除它,现在它再次正常工作,为什么会发生这种情况(请注意这是在另一个类中完成的,并采用整数输入,这是正常工作)。
发布于 2019-06-24 08:40:42
根据文件:
@throws NoSuchElementException如果没有找到行。
应该有一个行分隔符匹配行尾的\r\n|[\n\r\u2028\u2029\u0085]
正则表达式。
您的输入也应该与模式匹配 .*(\r\n|[\n\r\u2028\u2029\u0085])|.+$
你是如何使用这种cin()
方法的?
发布于 2019-06-24 09:39:37
你需要使用hasNextLine()
:
就像是:
public String cin() {
return s.hasNextLine() ? s.nextLine() : null;
}
要么
public Optional<String> cin() {
return s.hasNextLine() ? Optional.of(s.nextLine()) : Optional.empty();
}
您尝试使用hasNext()
,但可能会true
在输入行之前返回。
https://stackoverflow.com/questions/-100007035
复制相似问题