2014-01-16 50 views
-1

對不起,應該已經增加了更多的的Java While循環不能繼續下一條語句

import java.util.Scanner; 

public class rpg { 
    public static void main(String[] args) { 
    Scanner keyboard = new Scanner(System.in); 
    String input; 
    boolean live = true; 

    if (live == true){ 
     System.out.println("DETECTIVE RPG"); 

     while (true) {       // << ENTER CHECK 
     System.out.print("\n Press Enter..."); 
     input = keyboard.next(); 
     if (input.equals(null)) 
      break; 
     }          // ENTER CHECK >> 

     System.out.print("Past check."); 

鍵盤是我命名的掃描儀。

這將「Press Enter」輸出到控制檯,並確保輸入框爲空。如果他們按Enter鍵,它應該打破While循環並轉到下一個語句,對吧?當我按Enter時,它會顯示另一個輸入框,並且永遠不會到達下一個打印語句。

+4

可疑的控制檯輸出... –

+0

「輸入」和「鍵盤」的聲明在哪裏? –

+1

你確定'keyboard.next()'當你按下Enter鍵而不是比如說「^ M」或「」時返回null嗎? – Ned

回答

2

當只有「Enter」被擊中時,沒有從Scanner返回的令牌。 next() method將阻塞,直到它可以讀取令牌。

查找並返回此掃描程序的下一個完整標記。完整的令牌前後有與分隔符模式匹配的輸入。即使先前調用hasNext()返回true,該方法也可能在等待輸入進行掃描時阻塞。

切換到nextLine()

將此掃描儀推進到當前行並返回跳過的輸入。此方法返回當前行的其餘部分,排除末尾的任何行分隔符。該位置設置爲下一行的開頭。

由於此方法繼續搜索輸入以查找行分隔符,因此如果沒有行分隔符存在,它可能會緩存搜索要跳過的行的所有輸入。

它會返回整行輸入。當該行爲空時,它將返回一個空字符串,"",而不是null。請嘗試

input = keyboard.nextLine(); 
if ("".equals(input)) 
    break; 
+0

非常感謝。我理解了解釋並解決了我的問題。 – user3200498

+0

很好的答案。誠然,當問題更完整時幫助。 < grin/> – keshlam