2

使用 Java 中程序员定义的方法开发一个简单的掷骰子游戏。因为我知道程序至少需要运行一次然后询问玩家是否想再去一次,所以我选择使用 do/while 循环。我以前从未使用过,但我相信我设置它是正确的。

我的代码如下,不包括循环中包含的 main 方法的主体,以及程序员定义的方法。

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 得到的是“无法解决进程”。

关于发生了什么的任何想法?

4

3 回答 3

6

您需要在do.

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

当您在 中声明它时do,它的范围仅在该语句的主体内,并且不能在该while部分解析。

于 2011-11-20T03:14:22.110 回答
6

在 while 循环中取消引用时,proceed 不在范围内。将proceed变量的声明移到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');
于 2011-11-20T03:14:51.453 回答
0

与其最初将其设置为 null ,然后稍后再给它一个值,不如将其值定义为 'N' 以便另一个出现的编码人员不会暗示与 null 相关联的行为并采取相应的行动。该值应该是 2 项中的 1 项... Y 或 N,不要将其初始化为两个预期值以外的值。

您还可以通过使用那里的方法将 while 条件修改为更简洁。它更能描述您想要做什么,您可以对条件进行单元测试。

修改相当于:

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();

如果你有比这更多的代码,那么它在一个地方太多了。

于 2011-11-20T03:51:24.170 回答