我有以下代码片段,但是当我执行它时,它没有打印出骰子的值。
源代码如下:
System.out.println("Player 1s Go.\nEnter R to Roll and H to Hold");
input = scanner.next();
while (input.equals("R")) {
input = scanner.next();
die.throwDie();
System.out.println("Value on Die: " + die.getFaceValue());
if (rolledOne()) {
player1Rolled.clear();
System.out.println("Player 1 scored 0, End of turn");
holdPlayer1 = true;
holdPlayer2 = false;
break;
} else {
player1Rolled.add(die.getFaceValue());
}
}
getFaceValue()
是骰子类的访问器方法,它返回骰子的值。 throwDie() 是一个改变值并模拟骰子滚动的变异方法。
我得到的输出如下:
Player 1s Go.
Enter R to Roll and H to Hold
*R
R*
Value on Die: 5
*R*
Value on Die: 5
*R*
请注意,我必须告诉它滚动两次,它滚动两次但只打印出第二卷的值。
最佳答案
您调用 scanner.next()
两次。一次在循环外,一次在循环内。如果第一个输入是“R”,则进入 while 循环并立即等待新输入。
将 input = Scanner.next();
移动到循环的末尾而不是开始,我认为应该会给您带来您正在寻找的行为。
关于java - 使用扫描仪类输入时不打印字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9428564/