Java 如何创建一个石头,布,剪刀游戏的方法

Java 如何创建一个石头,布,剪刀游戏的方法,java,Java,我被分配了一个任务,我们必须创建一个石头、布、剪刀游戏。这是一个使用java方法和返回语句的初级编程类。我在编写运行程序所需的所有必要方法w/h return语句时遇到困难。提示如下: 编写一个程序,让用户在电脑上玩石头、布、剪刀的游戏。该程序应按如下方式工作 当程序开始时,将生成1到3范围内的随机数。如果数字是1,那么计算机选择了rock。如果数字是2,则计算机已选择纸张。如果数字是3,那么计算机选择了剪刀。不要显示计算机的选择。 用户在键盘上输入他或她选择的“石头”、“布”或“剪刀”。如果您

我被分配了一个任务,我们必须创建一个石头、布、剪刀游戏。这是一个使用java方法和返回语句的初级编程类。我在编写运行程序所需的所有必要方法w/h return语句时遇到困难。提示如下:

编写一个程序,让用户在电脑上玩石头、布、剪刀的游戏。该程序应按如下方式工作

当程序开始时,将生成1到3范围内的随机数。如果数字是1,那么计算机选择了rock。如果数字是2,则计算机已选择纸张。如果数字是3,那么计算机选择了剪刀。不要显示计算机的选择。 用户在键盘上输入他或她选择的“石头”、“布”或“剪刀”。如果您愿意,可以使用菜单。 将显示计算机的选择。 根据以下规则选择获胜者:

如果一个玩家选择石头,另一个玩家选择剪刀,那么石头赢了。石头砸剪刀。 如果一个玩家选择剪刀,另一个玩家选择布,那么剪刀获胜。剪刀剪纸。 如果一个玩家选择纸,另一个玩家选择石头,那么纸赢了。纸包裹着石头。 如果两名玩家做出相同的选择,则必须再次进行游戏以确定胜利者。确保将程序划分为执行每个主要任务的方法。 我尝试过在方法之外声明许多变量字符串和int。我做了一系列的随机测试。到目前为止,我有两种方法。老实说,我的问题是不知道什么时候使用循环、方法等等。这一切都有点混乱

import java.util.Scanner;
import java.util.Random;

public class rockPaperScissors
{
   public static int generateComputer(Random rc)
   {
       int n = rc.nextInt(3) + 1;
       return n; 
   }

   public static int playerChoice(Scanner sc)
   {
      System.out.println("Please enter an integer between 1 and 3:         ");
  int pc = sc.nextInt();

  while(pc < 1 || pc > 3)
  {
     System.out.println("Please enter an integer between 1 and 3: ");
     pc = sc.nextInt();
  }  

   return pc;
  }

  public static void main(String[] args)
  {
     int cp;
     int po;

     Random rc = new Random();
     Scanner sc = new Scanner(System.in);


     cp = generateComputer(rc);
     po = playerChoice(sc);
  }
}

我是新手,所以我不知道我在做什么。

我想你只需要添加一些if语句来决定是用户赢了,还是计算机赢了,还是平局,然后将结果打印到控制台上。

检查下面的代码,然后做一个简短的解释

public class RockPaperScissors {

    private static int getComputerRandomChoice() {
        Random rc = new Random();
        int n = rc.nextInt(3) + 1;
        return n;
    }
    private static int playerChoice() {
        System.out.println("== Rock Paper Scissors ==\n" +
                "== Rock : 1 ==\n"  +
                "== Paper : 2 ==\n"  +
                "== Scissors : 3 ==\n");
        Scanner sc = new Scanner(System.in);
        int pc = 0;
        while(pc<1 ||0 pc>3){
            System.out.println("Please make your choice (between 1 and 3):");
            String input = sc.nextLine();
            try {
                pc = Integer.parseInt(input);
            }catch (NumberFormatException e){
                System.out.println("Invalid input (not an integer)");
            }
        }
        return pc;
    }

    private static String getWinner(int cp, int po){
        if (cp==1){
            if (po==1){
                return "DRAW";
            }else if(po==2){
                return "USER";
            }else{
                return "COMPUTER";
            }
        }else if (cp==2){
            if (po==1){
                return "COMPUTER";
            }else if(po==2){
                return "DRAW";
            }else{
                return "USER";
            }
        }else{
            if (po==1){
                return "USER";
            }else if(po==2){
                return "COMPUTER";
            }else{
                return "DRAW";
            }
        }
    }

    public static void main(String[] args) {

        int cp = getComputerRandomChoice();
        int po = playerChoice();
        String winner = getWinner(cp, po);
        System.out.println("The computer chose: " + cp);
        System.out.println("The winner is: " + winner);
    }

}
你应该用CamelCase和大写字母RockPaperScissors来命名你的班级

此外,您的方法名称还应该具有某些含义,例如generateComputer与getComputerRandomChoice

您在generateComputer方法之外创建了一个随机对象,而这个随机对象没有在代码的任何其他位置使用,因此我将它放在getComputerRandomChoice方法中,因此该方法的对象仅可见,并在该方法中用于特定目的

对于Scanner,Scanner对象位于playerChoice方法中,因为没有其他地方需要用户输入。对于Scanner,请注意,我已将nextInt更改为nextLine,因为nextInt获取下一个整数,即使用户在5 6中输入空格,下一个int也不会失败,因为它将使用第一个int标记作为输入。使用nextLine,您的代码将读取整行,并在稍后尝试解析为整数“Integer.parseIntinput”

用户输入在while循环中,只有在输入有效输入时,代码才会退出循环


最后,getWinner方法接受2个输入,即计算机的选择、玩家的选择,并使用if-else语句应用游戏的业务逻辑。或者,您可以使用开关。

这是否回答了您的问题?