public void humanPlay()
{
if (player1.equalsIgnoreCase("human"))
System.out.println("It is player 1's turn.");
else
System.out.println("It is player 2's turn.");
System.out.println("Player 1 score: " + player1Score);
System.out.print("Player 2 score: " + player2Score);
String eitherOr;
do {
eitherOr= input.nextLine();
humanRoll();
} while (eitherOr.isEmpty());
if (!eitherOr.isEmpty())
humanHold();
}
这是整个方法,我唯一想解决的就是这个。
String eitherOr;
do {
eitherOr= input.nextLine();
humanRoll();
} while (eitherOr.isEmpty());
它必须多次接受输入,所以每次输入都需要确定发生了什么,这就是为什么我喜欢Do While循环,但由于它每次至少初始化一次,我得到的额外滚动比需要的多。
我试过这样做,以及这种方式的各种变化:
String eitherOr = input.nextLine();
while(eitherOr.isEmpty());
humanRoll();
这不起作用,因为它不再要求输入。如果我尝试输入input.nextline();在while循环中,它表示“bothOr”未初始化,即使我在输入输入时初始化它,命令行也会保持空白,因此它对我的输入没有任何作用。
答案 0 :(得分:4)
你有一个无关的分号:
while(eitherOr.isEmpty());
humanRoll();'
应该是:
while(eitherOr.isEmpty())
humanRoll();
基本上,您的版本在eitherOr.isEmpty()
为true
时不会执行任何操作,因此永远无法调用humanRoll
。
答案 1 :(得分:1)
如果您的第二个代码段是在while循环中执行空白语句
while(eitherOr.isEmpty());//this semicolon is a blank statement
humanRoll();
你必须删除这个分号才能执行humanRoll作为循环的一部分
while(eitherOr.isEmpty())
humanRoll();
另一方面,使用paranthesis通常可以避免这种小问题
while(eitherOr.isEmpty()) {
humanRoll();
}
在上面的代码中,如果引入了无意的分号,很容易识别。