2014-03-02 34 views
0

我是編程新手,我需要添加一個JOptionPane,上面寫着:「再次播放?」。選擇「是」和「否」。如何使這個Java程序循環?

如果「是」,遊戲將重新開始。如果「否」,遊戲將終止。

任何幫助將不勝感激。提前致謝!

import javax.swing.JOptionPane; 
import java.util.Random; 

public class JackAndPoy { 


    public static void main(String[] args) 
    { 
     String computerSide, 
       userSide; 

     JOptionPane.showMessageDialog(null, " Play the Game \"Rock, Paper, Scissors?\""); 

     computerSide = ComputerChoice(); 
     userSide = UserChoice(); 


     if (userSide != null) 
     { 
      JOptionPane.showMessageDialog(null, "The computer's choice is " + computerSide + "."); 

      Winner(computerSide, userSide); 
     } 

     else { 
      JOptionPane.showMessageDialog(null, "Error: Improper UserEntry. Please enter either" + 
             " 'rock', 'paper', or'scissors'."); 
     } 
    } 

    public static String ComputerChoice() 
    { 
     byte computerChoice; 

     String computerChoiceString = ""; 

     Random choiceGenerator = new Random(); 

     computerChoice = (byte)(choiceGenerator.nextInt(3) + 1); 

     switch (computerChoice) 
     { 


      case 1: 
      { 
       computerChoiceString = "rock"; 
       break; 
      } 


      case 2: 
      { 
       computerChoiceString = "paper"; 
       break; 
      } 

      case 3: 
      { 
       computerChoiceString = "scissors"; 
       break; 
      } 

     } 

     return computerChoiceString; 
    } 

    public static String UserChoice() 
    { 
     String userChoice, 
       userChoiceLowerCase; 

     userChoice = 
       JOptionPane.showInputDialog("Choice: [rock][paper][scissors]"); 

     if (userChoice.equalsIgnoreCase("rock") || userChoice.equalsIgnoreCase("paper") 
       || userChoice.equalsIgnoreCase("scissors")) 
     { 
      userChoiceLowerCase = userChoice.toLowerCase(); 
     } 

     else { 
      userChoiceLowerCase = null; 
     } 

     return userChoiceLowerCase; 
    } 

public static void Winner(String computerSide, String userSide) 
    { 

     if (computerSide.equals(userSide)) { 
      JOptionPane.showMessageDialog(null, "The game has to be played again, because we have a tie."); 
     } 

      else if (computerSide.equalsIgnoreCase("rock") && userSide.equalsIgnoreCase("paper")) { 
      JOptionPane.showMessageDialog(null, "You win. Paper covers rock."); 
     } 


     else if (computerSide.equalsIgnoreCase("rock") && userSide.equalsIgnoreCase("scissors")) { 
      JOptionPane.showMessageDialog(null, "You lose. Rock crushes scissors."); 
     } 


     else if (computerSide.equalsIgnoreCase("paper") && userSide.equalsIgnoreCase("rock")) { 
      JOptionPane.showMessageDialog(null, "You lose. Paper covers rock."); 
     } 


     else if (computerSide.equalsIgnoreCase("paper") && userSide.equalsIgnoreCase("scissors")) { 
      JOptionPane.showMessageDialog(null, "You win. Scissors cuts paper."); 
     } 


     else if (computerSide.equalsIgnoreCase("scissors") && userSide.equalsIgnoreCase("rock")) { 
      JOptionPane.showMessageDialog(null, "You win. Rock crushes scissors."); 
     } 


     else { 
      JOptionPane.showMessageDialog(null, "You lose. Scissors cuts paper."); 
     } 
    } 
} 
+1

研究do-while循環。 http://docs.oracle.com/javase/tutorial/java/nutsandbolts/while.html如果玩家說'不',否則你也可以用布爾值爲false的while循環。 –

回答

1

你需要一個do-while循環,它執行一個動作,然後檢查條件再次執行。這與常規while循環有所不同。 do-while循環必須至少執行一次該代碼塊。所以改變你的主要方法是這樣的:

public static void main(String[] args) 
    { 
    JOptionPane.showMessageDialog(null, 
      " Play the Game \"Rock, Paper, Scissors?\""); 

    String computerSide, userSide; 

    do 
     { 
     computerSide = ComputerChoice(); 
     userSide = UserChoice(); 
     if(userSide != null) 
      { 
      JOptionPane.showMessageDialog(null, "The computer's choice is " 
        + computerSide + "."); 
      Winner(computerSide, userSide); 
      } 
     else 
      { 
      JOptionPane.showMessageDialog(null, 
        "Error: Improper UserEntry. Please enter either" 
          + " 'rock', 'paper', or'scissors'."); 
      } 
     } 
    while(JOptionPane.showConfirmDialog(null, "Play Again?", "Rock-Paper-Scissors", JOptionPane.YES_NO_OPTION) == 0); 
    }