2012-02-24 43 views
0

我有以下代碼片段,但是當我執行它時,不會打印出骰子的值。當使用掃描儀類輸入時字符串未被打印

這裏是源代碼:

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* 

請注意,我必須告訴它滾動兩次,那是滾動兩次,但只打印出第二卷的價值。

+3

問題是? – Steven 2012-02-24 09:49:58

+3

你說你的代碼沒有打印死亡的值,但你的示例輸出是這樣的。 – mcfinnigan 2012-02-24 09:52:26

+0

看我的編輯。它必須首先滾動兩次。 – Dean 2012-02-24 10:18:31

回答

1

您撥打scanner.next()兩次。一旦在循環之外,一旦進入。如果第一個輸入是「R」,那麼它進入while循環並立即等待新的輸入。

input = scanner.next();移到循環的結尾,而不是開始我認爲應該給你你正在尋找的行爲。

+0

是的,我半睡着了。沒有注意到我把它放進去,因爲輸入沒有改變。但是我把它放在循環中的錯誤位置。 – Dean 2012-02-24 10:34:53