java - 添加 while 循环,使用户输入的石头剪刀布游戏重复进行,直到用户结束游戏

标签 java java.util.scanner

好的,我已经编写了一个简单的石头剪刀布游戏,使用用户输入来玩。用户输入他们的选择,随机函数选择计算机运行,然后生成结果。此后程序将终止,因为它已完成。我想使用 while 循环,这样当游戏结束时,它会再次开始,然后如果用户输入 exitquit ,程序就会停止,这可以只需说一些类似 while playerGo != exit, play the game blah blah 的内容即可轻松完成。但是,我无法让它工作,有人可以帮助我吗,我是一个 Java 菜鸟:)

import java.util.Scanner;   

public class RockPaperScissors{   
  public static void main(String[] args){  

    Scanner input = new Scanner(System.in);

    int compGoInt;
    String compGo;
    String playerGo;

    System.out.println("You can type 'Exit' to quit the game at any time.");
    System.out.print("Please enter your choice. Rock, Paper or Scissors: ");
    playerGo = input.nextLine();

    compGoInt = (int) (Math.random() * 3);

    switch (compGoInt){
    case 0:
        compGo = "Rock";
        break;
    case 1:
        compGo = "Paper";
        break;
    case 2:
        compGo = "Scissors";
        break;
    default:
        compGo = "Error";
        System.out.println("Error.");
        break;
    }

    if (playerGo.equals(compGo)){
        System.out.println("Computer chooses "+compGo);
        System.out.println("It's a draw!");
    }

    else if ((playerGo.equalsIgnoreCase("Rock") && compGo.equalsIgnoreCase("Scissors")) ||
            (playerGo.equalsIgnoreCase("Paper") && compGo.equalsIgnoreCase("Rock")) ||
            (playerGo.equalsIgnoreCase("Scissors") && compGo.equalsIgnoreCase("Paper"))){
        System.out.println("Computer chooses "+compGo);
        System.out.println("Player Wins!");
    }

    else if ((compGo.equalsIgnoreCase("Rock") && playerGo.equalsIgnoreCase("Scissors")) ||
            (compGo.equalsIgnoreCase("Paper") && playerGo.equalsIgnoreCase("Rock")) ||
            (compGo.equalsIgnoreCase("Scissors") && playerGo.equalsIgnoreCase("Paper"))){
        System.out.println("Computer chooses "+compGo);
        System.out.println("Computer Wins!");
    }

    else{
        System.out.println("Something has gone wrong!");
        System.out.println("Player chose "+playerGo);
        System.out.println("Computer chose "+compGo);
    }


}

}

最佳答案

简单地说:

while(true) {
     if(playerGo.equalsIgnoreCase("Exit")) break;
     else //GameLogic
}

不过,如果我可以这么说,您应该让用户选择一个数字,因为任何字母输入都容易出错。

出于澄清目的:

import java.util.Scanner;   

public class RockPaperScissors{   
    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);

        int compGoInt;
        String compGo;
        String playerGo;

        while(true) {
            System.out.println("You can type 'Exit' to quit the game at any time.");
            System.out.print("Please enter your choice. Rock, Paper or Scissors: ");
            playerGo = input.nextLine();

            if(playerGo.equalsIgnoreCase("Exit")) break;    //Checks for exit condition.
            else { //GameLogic

                compGoInt = (int) (Math.random() * 3);

                switch (compGoInt){
                case 0:
                    compGo = "Rock";
                    break;
                case 1:
                    compGo = "Paper";
                    break;
                case 2:
                    compGo = "Scissors";
                    break;
                default:
                    compGo = "Error";
                    System.out.println("Error.");
                    break;
                }

                if (playerGo.equals(compGo)){
                    System.out.println("Computer chooses "+compGo);
                    System.out.println("It's a draw!");
                }

                else if ((playerGo.equalsIgnoreCase("Rock") && compGo.equalsIgnoreCase("Scissors")) ||
                        (playerGo.equalsIgnoreCase("Paper") && compGo.equalsIgnoreCase("Rock")) ||
                        (playerGo.equalsIgnoreCase("Scissors") && compGo.equalsIgnoreCase("Paper"))){
                    System.out.println("Computer chooses "+compGo);
                    System.out.println("Player Wins!");
                }

                else if ((compGo.equalsIgnoreCase("Rock") && playerGo.equalsIgnoreCase("Scissors")) ||
                        (compGo.equalsIgnoreCase("Paper") && playerGo.equalsIgnoreCase("Rock")) ||
                        (compGo.equalsIgnoreCase("Scissors") && playerGo.equalsIgnoreCase("Paper"))){
                    System.out.println("Computer chooses "+compGo);
                    System.out.println("Computer Wins!");
                }

                else{
                    System.out.println("Something has gone wrong!");
                    System.out.println("Player chose "+playerGo);
                    System.out.println("Computer chose "+compGo);
                }
            }
        }
    }
}

关于java - 添加 while 循环,使用户输入的石头剪刀布游戏重复进行,直到用户结束游戏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13321627/

相关文章:

Java - 从预先设计的形状中选择随机形状

Java-将文件中的所有整数添加到ArrayList

java - 如何参数化字符串并替换参数

java - 如何从字符串中提取数值并将这些数字相加?

java - 扫描程序是否应该仅实例化一次?如果是这样的话,为什么呢?

Java 扫描仪问题 (JFrame)

java - 如果将扫描器作为参数传递,它的状态是否也会传递?

java - 单击行更改行布局

java - 如何在 Java 中创建 SqlQuerySpec 以检索具有给定 id 的文档列表(where-in 子句)

java - 如何在 HQL 或 JPQL 中使用强制转换?