2013-09-28 2 views
0

제 질문은 일반적인 게임 알고리즘이 아닙니다. 내가 질문에 "true"로 응답하면 프로그램 출력을 "계속 하시겠습니까? 참 또는 거짓을 입력하십시오.": while 루프에서 첫 번째 사이클 이후에 출력

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

그래서 내가 첫 번째 사이클에 값을 입력 할 수 있지만 두 번째에 있습니다. 어떻게 해결할 수 있습니까? 감사.

코드는 다음 Scanner은 당신이 다른 nextBoolean 아무것도, 종료조차 다음 줄에 요청 부울을 읽기 때문에

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

처음 작동하지만 "true"를 입력하면 프로그램에서 처음으로 입력을 요청하지 않고 플레이어 1을 출력하고 모양 (바위, 종이, 가위)을 던집니다! 플레이어 2 명, 모양을 던져주세요 (바위, 종이, 가위)! – Timur

+0

그래서 게임을 계속하려면 입력을 건너 뜁니다. – Timur

답변

4

이다. 그런 다음 줄 끝은 입력 스트림에 남아 있으며 루프가 돌아올 때 nextLine을 요청하면 빈 줄로 반환됩니다.

대신에 playAgain에 대한 부울 대신 전체 라인을 읽고이를 수동으로 해석하십시오 (예 : myScan.nextLine().equals("yes")과 같은 것이 좋습니다).

관련 문제