2016-02-12 193 views
-1

當輸入完成時,我想要實現掃描器終止。作爲終止,我選擇空行 - 只需輸入密鑰。然而由於某種原因(我不知道)下面的實現不起作用。你有什麼想法,爲什麼?或者也許你知道更好的解決方案終止掃描器輸入

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()方法試了這個。它沒有給出任何結果。 –

回答

1

你需要尋找scanner.nextLine()。長度()== 0

因爲\ n是行終止,這不會對掃描儀,類似的概念被返回給解析字符串或使用StringTokenizer的。你只需要查找一個零長度的字符串。

+0

你的概念似乎很棒!謝謝!但它不給我任何結果,我不知道爲什麼。有什麼建議麼? 掃描儀掃描儀=新掃描儀(System.in); //此代碼不起作用 –

+0

您的初始代碼在分析空白之前未將行分配給臨時變量線。通過在一次調用中執行scanner.nextLine()。length(),您可以在一個步驟中消耗/分析/丟失該行。我只是拿着你的東西,但想看看你是否意識到了! :) –

+0

如果我寫下這樣下面我會失去第一行輸入。 int nextLine = scanner.nextLine()。length(); 而(nextLine == 0){ //代碼 nextLine = scanner.nextLine()長度(); } –