2011-11-20 53 views
2

在Java中使用程序員定義的方法處理簡單的擲骰子游戲。因爲我知道該程序需要至少運行一次,然後詢問玩家是否想再次出發,所以我選擇了使用do/while循環。我以前從來沒有使用過,但我相信我是正確的。Java do循環 - 字符串無法解析

我的代碼如下,不包括循環中包含的主要方法的主體,以及程序員定義的方法。

do { 
    // main METHOD BODY .. 

    String proceed = ui.nextLine(); 
    System.out.print("Would you like to play again (yes/no)? "); 

} while (proceed.charAt(0) == 'Y' || proceed.charAt(0) == 'y'); 

我從Eclipse IDE得到的這一點是「繼續無法解決」。

關於發生了什麼的任何想法?

回答

6

您需要在do之外申報。

String proceed = null; 
do { 
    ...  
    proceed = ui.nextLine(); 
    ...  
} while (proceed.charAt(0) == 'Y' || proceed.charAt(0) == 'y'); 

在聲明它的do內,其範圍只內聲明的身體,並且不能在while部分解決。

+0

@StephenC:有什麼危害? –

+0

太棒了,修復了它。對我來說,這是一個愚蠢的錯誤。謝謝一堆! – awfulwaffle

+0

不客氣! –

6

繼續在while循環中取消引用時不在範圍內。將do變量的聲明移到do之外。

String proceed; 
do{ 

main METHOD BODY 

    proceed = ui.nextLine(); 
    System.out.print("Would you like to play again (yes/no)? "); 

} while (proceed.charAt(0) == 'Y' || proceed.charAt(0) == 'y'); 
0

,而不是設置這個最初空,後來給它的值,最好是隻定義它的值設爲「N」誰誰誰走來另一編碼器並不意味着相關的爲空並採取相應措施的行爲。這個值應該是2的東西中的1個...... Y或N,不要將它初始化爲除兩個預期值之外的東西。

你也可以修改它,而條件是通過使用一種方法來清潔一點。它更多地描述你想要做什麼,你可以單元測試條件。

有了這等於修改:

String proceed="N"; 
while (this.playAgain(proceed)) { //playAgain performs the same test as you have in your while 
    //your code 
} 

其次,在你的代碼是故意剪斷,確保包括像:

Game game = new Game(); 
game.play(); 

如果您有很多更多的代碼那在一個地方太多了。

+0

在遊戲循環永遠不會執行的例子中,因爲它被初始化爲「N」而不是「Y」 –