使用扫描仪类输入时不打印字符串

时间:2012-02-24 09:45:08

标签: java java.util.scanner

我有以下代码片段但是当我执行它时不会打印出die的值。

以下是源代码:

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()是die类的访问器方法,它返回die的值。 throwDie()是一种mutator方法,它可以更改值并模拟骰子的滚动。

我得到的输出如下:

Player 1s Go.
Enter R to Roll and H to Hold
*R
R*
Value on Die: 5
*R*
Value on Die: 5
*R*

请注意,我必须告诉它滚动两次,它滚动两次但只打印出第二次滚动的值。

1 个答案:

答案 0 :(得分:1)

您拨打scanner.next()两次。一旦进入循环并进入内部。如果第一个输入为“R”,则进入while循环并立即等待新输入。

input = scanner.next();移到循环的末尾而不是开头,我认为应该为您提供您正在寻找的行为。