簡體   English   中英

無法讓我的 Java 程序再次要求輸入

[英]Cannot get my Java program to ask for input again

我正在創建一個小的 Rock, Paper, Scissors 項目來進入 Java。 我是語言的新手。 我已經在我的項目中取得了相當大的進展,但我被困在了某個部分。 在“獲取玩家移動”部分,我希望它識別玩家是否輸入了 R、P 或 S,然后在需要時再次請求輸入。 我嘗試了多種方法來做到這一點,但都沒有正常工作。 我的代碼如下。

    {
Random generator = new Random ();

Scanner in = new Scanner(System.in);


//Generate Random Computer Move
  computerAi = 0;
  computerAi = generator.nextInt(3)+1;

  if (computerAi == 3)
    computerMove = "S";
  else if (computerAi == 2)
    computerMove = "P";
  else if (computerAi == 1)
      computerMove = "R";

//Get Player Move

System.out.println("Enter R, P, or S. R= Rock, P= Paper, and S= Scissors: ");
  playerMove = in.nextLine();

//Display Choices
  System.out.println("You picked: " + playerMove);
  System.out.println("Computer Picked: " + computerMove);

//Determine if Player or Computer Won
if (playerMove.equals(computerMove))
  scoreCheck = 0;
else if (playerMove.equals("R"))
  if (computerMove.equals("P"))
    scoreCheck = -1;
  else if (computerMove.equals("S"))
    scoreCheck = 1;
else if (playerMove.equals("P"))
  if (computerMove.equals("S"))
    scoreCheck = -1;
  else if (computerMove.equals("R"))
    scoreCheck = 1;
else if (playerMove.equals("S"))
  if (computerMove.equals("R"))
    scoreCheck = -1;
  else if(computerMove.equals("P"))
    scoreCheck = 1;


//determine whether player won or lost
score += scoreCheck;
if (scoreCheck == 1)
  System.out.println("You Won! Score:" + score);

else if (scoreCheck == 0)
  System.out.println( "You Tied! Score:" + score);

else if (scoreCheck == -1)
  System.out.println("You Lost! Score:" + score);

System.out.println(" ");
System.out.println("Type 'replay' to play again");
replay = in.nextLine();
scoreCheck = score;
}

}

}

我能夠訪問我為項目創建的原始 while 語句:

while (playerMove == ("None"))
44  - {
45  -   System.out.println("Enter R, P, or S. R= Rock, P= Paper, and S= Scissors: ");
46-     playerMove = in.nextLine();
47  - if (playerMove == ("R"))
48  -   System.out.println (" ");
4948     
50  - else if (playerMove == ("P"))
51  -   System.out.println (" ");
52  -
53  - else if (playerMove ==("S"))
54  -   System.out.println (" ");
55  -
56  - else if (playerMove != ("R"))
57  - {
58  -   if (playerMove != ("P"))
59  -   {
60  -    if (playerMove != ("S"))
61  -    {
62  -       System.out.println("Incorrect Input. Please try again.");
63  -       playerMove = "None";
64  -    }
65  -     else if (playerMove == ("S"))
66  -     
67  -   }
68  - }
69  - } 
} 
System.out.println("Enter R, P, or S. R= Rock, P= Paper, and S= Scissors: ");
playerMove = in.nextLine();

更改為類似:

String playerMove = null;
while (playerMove == null && !playerMove.matches("[rpsRPS]")) {
  System.out.println("Enter R, P, or S. R= Rock, P= Paper, and S= Scissors: ");
  playerMove = in.readline();

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM