我有以下方法:
private String doEntryScan(InputStream stream)
{
try (Scanner scanner = new Scanner(stream)) // Reading from System.in
{
String readString = scanner.nextLine();
if (readString.isEmpty())
{
readString = "\n";
}
scanner.nextLine(); //consume carriage returns if they remain
scanner.close();
return readString;
}
}
这个想法是用户可以按Enter键接受默认值。或者他们可以输入一些东西如果我包含该行
scanner.nextLine(); //consume carriage returns if they remain
此方法挂起,可能等待更多输入。如果我没有那条线,下次调用此方法时会收到NoSuchElementException。我假设这是因为流中有回车符。
那么如何解决这个问题呢? scanner.hasNext()没有帮助,因为它有时候"有时"块。 顺便说一下,实际上InputStream是System.in。