-2

我被分配了一项任务,我们必须使用方法和返回语句创建一个石头、纸、剪刀游戏(这是使用 java 的初级编程类)。我无法编写运行程序所需的所有必要方法以及返回语句。这是提示:

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

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

    • 如果一个玩家选择摇滚,另一个玩家选择剪刀,那么摇滚赢。(石头打碎了剪刀。)
    • 如果一个玩家选择剪刀,另一个玩家选择纸,那么剪刀获胜。(剪刀剪纸。)
    • 如果一个玩家选择纸,另一个玩家选择摇滚,那么纸赢。(纸包裹岩石。)
    • 如果两个玩家做出相同的选择,则必须再次进行游戏以确定获胜者。确保将程序划分为执行每个主要任务的方法。

我尝试在方法之外声明许多变量(字符串和整数)。我有进口商扫描仪和随机的。到目前为止,我有两种方法。老实说,我的问题是不知道何时使用循环、方法等。这一切都有些混乱。

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);
  }
}

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

4

2 回答 2

0

之后检查以下代码和简要说明。

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

此外,您的方法名称应该意味着例如generateComputervs. getComputerRandomChoice()

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

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

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

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

于 2019-11-12T13:31:13.320 回答
0

我认为您只需要添加一些 if 语句来决定用户获胜,还是计算机获胜,或者是平局,然后将结果打印到控制台。

于 2019-11-12T13:03:21.797 回答