2013-09-28 246 views
0

我的問題不是關於一般遊戲算法。當我回答「真正的」問題「是否要繼續輸入真或假的?」,節目輸出:在while循環中的第一個循環後輸出

"Player one, throw your shape(rock, paper, scissors)! 
Player two, throw your shape(rock, paper, scissors)!" 

,所以我不能在第二次進入第一個週期的值,但是。我該如何解決它?謝謝。

代碼:

public static void main(String[] args) { 

     String playerOne; 
     String playerTwo; 
     Scanner myScan = new Scanner(System.in); 
     boolean playAgain = true; 

     do 
     { 
      System.out.println("Player one, throw your shape(rock, paper, scissors)! "); 
      playerOne = myScan.nextLine();   
      System.out.println("Player two, throw your shape(rock, paper, scissors)! "); 
      playerTwo = myScan.nextLine(); 




      if (playerOne.equals("scissors") && playerTwo.equals("rock")) 
      { 
      System.out.println("Player one lost! Playr two won!"); 
      } 

       else if (playerOne.equals("scissors") && playerTwo.equals("paper")) 
       { 
       System.out.println("Player one won! Player two lost!"); 
       } 


       else if (playerOne.equals("rock") && playerTwo.equals("paper")) 
       { 
       System.out.println("Player one lost! Player two won!"); 
       } 


       else if (playerOne.equals("rock") && playerTwo.equals("scissors")) 
       { 
       System.out.println("Player one won! Player two lost!"); 
       } 


       else if (playerOne.equals("paper") && playerTwo.equals("scissors")) 
       { 
       System.out.println("Player one lost! Player two won!"); 
       } 


       else if (playerOne.equals("paper") && playerTwo.equals("rock")) 
       { 
       System.out.println("Player one won! Player two lost!"); 
       } 

       System.out.println("Do you want to continue? Enter true or false."); 
       playAgain = myScan.nextBoolean(); 

     }while(playAgain); 


    } 
} 
+1

您的程序似乎按照它應該的方式工作。 「第一週期但不是第二週期」是什麼意思?你如何定義「循環」? –

+0

它第一次工作,但是當我輸入「真」,程序不要求第一次輸入,但輸出 玩家之一,拋出你的形狀(岩石,紙,剪刀)! 玩家二,扔你的形狀(岩石,紙,剪刀)! – Timur

+0

因此,如果我想繼續遊戲,它會跳過輸入 – Timur

回答

4

這是因爲Scanner只讀取你nextBoolean,沒有別的,甚至沒有以下行結束請求布爾。結束的行將保留在輸入流中,並在循環出現時作爲空行返回,並請求nextLine

你需要做的是讀取一個完整的行,而不是僅僅是一個布爾值playAgain,並手動解釋(建議像myScan.nextLine().equals("yes"))。

相關問題