2011-11-20 132 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” –