2009-04-30 80 views
0

是否有人知道爲什麼我的nextLine()在下面的代碼中的for循環之後無法工作?它總是跳過nextLine()並直接轉到if聲明。nextLine()在for循環後不工作

int[] a = new int[3] 

for(int i=0; i<3;i++) 
{ 
    a[i] = nextInt(); 
} 

String b = nextLine(); 

if(b == "go") 
{ 
    ....... 
} 
else 
{ 
    ..... 
} 
+0

我認爲沒有理由發生這種情況,需要更多的細節。你確定你正在運行的代碼與你向我們展示的源代碼是否相同? – 2009-04-30 09:44:26

回答

0

什麼意思是不工作?你的意思是說nextLine()方法沒有被調用。根據您粘貼的代碼,它將100%地調用nextLine()方法。

0

涉及nextLine的聲明應始終在那裏執行(除非拋出異常)。您不會顯示nextLine的實施。你確定它沒有執行嗎?分散的幾個System.err.println("blah")可能會有所幫助。

順便說一句:字符串比較幾乎可以肯定是b.equals("go")。如果b可能是null,請爲此明確檢查或編寫表達式"go".equals(b)

3

我猜你可能正在做的是要求用戶輸入整數,然後按回車。當它解析整數時,它只是解析和刪除整數。但他們所壓的換行符當然還在流中。然後,當你詢問nextLine()時,它會立即返回,因爲流中已經有一行(以換行符結尾的整數)。也許你實際上期望nextLine()在整數進入後等待另外一行,但那不是發生了什麼。這是正確的嗎?