终止扫描器输入

问题描述:

当输入完成时,我想要实现扫描器终止。作为终止,我选择空行 - 只需输入密钥。然而由于某种原因(我不知道)下面的实现不起作用。你有什么想法,为什么?或者也许你知道更好的解决方案终止扫描器输入

Scanner scanner = new Scanner(System.in); 
while (!scanner.nextLine().startsWith("\n")) { 
    // code 
} 
// code after press just Enter 

我也试过:

while (!scanner.nextLine().equals("\n")) 

...或:

while (scanner.nextLine().isEmpty()) 

没有什么工作......

PS。有些人可能认为我重复了这个主题: How to terminate Scanner when input is complete?

但是我这样做的目的,因为我现在要求具体实施,而不是一般的扫描仪终止。

+0

将'scanner.nextLine()'存储到一个变量并检查它是否为空,输入循环并直接使用变量... – Codebender

+0

您是否试图让用户输入一行文本,进入,你的代码继续前进? –

+0

@Codebender:谢谢你的建议,但我用isEmpty()方法试了这个。它没有给出任何结果。 –

你需要寻找scanner.nextLine()。长度()== 0

因为\ n是行终止,这不会对扫描仪,类似的概念被返回给解析字符串或使用StringTokenizer的。你只需要查找一个零长度的字符串。

+0

你的概念似乎很棒!谢谢!但它不给我任何结果,我不知道为什么。有什么建议么? 扫描仪扫描仪=新扫描仪(System.in); //此代码不起作用 –

+0

您的初始代码在分析空白之前未将行分配给临时变量线。通过在一次调用中执行scanner.nextLine()。length(),您可以在一个步骤中消耗/分析/丢失该行。我只是拿着你的东西,但想看看你是否意识到了! :) –

+0

如果我写下这样下面我会失去第一行输入。 int nextLine = scanner.nextLine()。length(); 而(nextLine == 0){ //代码 nextLine = scanner.nextLine()长度(); } –