2012-10-08 158 views
1
Scanner scanner = new Scanner(system.in); 
String input = new String(); 

while(!input.equalsIgnoreCase("stop")) { 
input = scanner.nextLine(); 
} 

爲什麼這不起作用?循環持續到永遠。我曾經使用過這種方法一百萬次,現在它不會工作。字符串檢查while循環無法正常工作

編輯**

好吧我使用JGrasp(因爲這是我的教授希望我們使用) ,當我想這在NetBeans它工作得很好......

EDIT2 **

首先,我不確定這是否是問題,但在我的代碼中,我有類似於主 開始掃描儀掃描儀=新的掃描儀(文件); 而後來就像這樣 scanner = new Scanner(System.in); 這就是之前代碼片段的起點。所以我首先通過主要調用一個新的方法來改變這個區域,我需要帶有字符串檢查的while循環。我也重新格式化了循環:

Scanner scanner = new Scanner(System.in); 
    String input = new String(); 

    while(!input.contains("stop")) { 
     System.out.print("Enter an option: "); 
     input = scanner.nextLine(); 
    } 

現在它工作正常。

EDIT3 **

所以我嘗試了新方法內的原始格式,它也完美的作品。我現在認爲它與我如何爲文件掃描器有關,然後重新使用System.in的新掃描器對象的引用。我不是100%,但是把while循環移到了它自己的方法中,而不是保持它的主要工作狀態,所以我覺得它與此有關。

+0

輸入線具有精確等於「停止」。它不能有額外的選項卡,空間,不可打印的Unicode字符或其他任何內容。 –

+2

只是猜測 - input.trim()。equalsIgnoreCase(「停止」)? –

+1

適用於我... –

回答

1

也許你應該檢查掃描儀是否有東西需要解析?

while(scanner.hasNextLine() && !input.equalsIgnoreCase("stop")) { 
    input = scanner.nextLine(); 
} 
+0

這實際上是由用戶輸入的,而不是文件或任何東西,所以掃描儀總是有一些東西可以解析......據我所知。 – TyP

0

代碼工作正常: 除了一個編譯錯誤即請用System.in代替system.in

Scanner scanner = new Scanner(System.in); 
String input = new String(); 

while(!input.equalsIgnoreCase("stop")) { 
    input = scanner.nextLine(); 
}