【问题标题】:May someone help create a PairOfDice class using the Die.java可能有人帮助使用 Die.java 创建一个 PairOfDice 类
【发布时间】:2020-07-25 06:50:25
【问题描述】:

我认为我的问题在于 PairOfDice 类,因为我只需要在 EyesHaveIt 类中使用包含两个骰子值的对象。我不断收到以下错误: PairOfDice.java:16:错误:需要类、接口或枚举 公共 int getDie1() ^

PairOfDice.java:19:错误:需要类、接口或枚举 } ^

PairOfDice.java:21:错误:需要类、接口或枚举 公共 int getDie2() ^

PairOfDice.java:24:错误:需要类、接口或枚举 } ^

EyesHaveIt.java:44:错误:找不到符号 int die1 = dieOne.getDieOneValue(); ^ 符号:方法 getDieOneValue() 位置:变量 dieOne 类型为 PairOfDice EyesHaveIt.java:45:错误:找不到符号

这是我试图修复它的尝试。谢谢!

这是我的 Die Class:

import java.util.Random;

public class Die

{

public static Random generator = new Random();

public int roll ()

{

      return generator.nextInt(6) + 1;  // Randome # dice between 1-6

}

}

\\Here's my PairOfDice class:

public class PairOfDice
{
   private int die1Value;
   private int die2Value;

   public PairOfDice()
   {
      Die die1 = new Die();
      Die die2 = new Die();

      die1Value = die1;
      die2Value = die2;
    }
}   
   public int getDie1()
   {
      return die1;
   }

   public int getDie2()
   {
      return die2;
   } 

}

这是我尝试使用该代码的 EyesHaveIt 类:

import java.util.Scanner;

public class EyesHaveIt
{
   Scanner kb = new Scanner(System.in);
   private int turnScore;
   private int computerTotalScore;
   private int playerTotalScore;
   private int computerTurnNumber;
   private int playerTurnNumber;
   public int roundPoints;
   private String userName;

   public void init(String name)
   {
      userName = name;
   }

   public void playGame()
   {
      computerTurn();
   }

   public void computerTurn()
   {
      turnScore = 0;
      System.out.println("Computer Turn: ");
      while (turnScore < 20)
      {
         rollTheDice();
      }
   }

   public void rollTheDice()
   {
      PairOfDice dieOne = new PairOfDice();
      PairOfDice dieTwo = new PairOfDice();
      int die1 = dieOne.getDieOneValue();
      int die2 = dieTwo.getDieOneValue();
      System.out.println("Rolled: " + die1 + " and " + die2);
   }

这个类将是一对标准六面骰子的抽象。 EyesHaveIt 对象只会创建此类的一个对象,并在整个过程中使用 双方球员的比赛。您应该将此对象视为一对骰子。当一个玩家 在一个回合中滚动,该玩家正在滚动 PairOfDice 对象。玩家从不掷骰子对象 直接地。 PairOfDice 类的客户端将滚动 PairOfDice 对象,获取 对中的每个骰子,等等。这个类应该有两个属性:两个对象 上课,死。这是唯一使用 Die 类的类。

【问题讨论】:

  • PairOfDice.java 中,在 getDie1() 方法之前有一个额外的右大括号。删除它。

标签: java dice


【解决方案1】:

Die 类很好:

import java.util.Random;

public class Die {

    public static Random generator = new Random();

    // Roll of a 'Single Die'
    public int roll() {
        return generator.nextInt(6) + 1;  // Random # dice roll between 1-6
    }
} 

然而,在您当前的 PairOfDice 类中,您有两个特定的类全局实例成员变量(int 数据类型),分别名为 die1Value 和 die2Value 但在同一个类的构造函数中,您声明了两个 Diedie1die2)并分配分别为 die1Valuedie2Value

  public PairOfDice() {
      Die die1 = new Die();
      Die die2 = new Die();

      die1Value = die1; 
      die2Value = die2;
}

你不能这样做,因为 die1die2 不是 int 的,它们是 Die的。此外,die1die2 也应该被声明为实例成员变量。应该做的是:

 public class PairOfDice {

     private int die1Value;
     private int die2Value;

     private final Die die1 = new Die();
     private final Die die2 = new Die();

     // PairOfDice Constructor...
     public PairOfDice() {
        this.die1Value = die1.roll();
        this.die2Value = die2.roll();
    }

    public int getDie1() {
        return this.die1Value;
    }

    public int getDie2() {
        return this.die2Value;
    }

    // Roll of a 'Pair Of Dice'
    public void roll() {
        this.die1Value = die1.roll();
        this.die2Value = die2.roll();
    }
}

现在,die1Valuedie2Value 实际上被分配了 int(每个骰子的随机掷骰值)。

我对名为 EyesHaveIt 的游戏一无所知,我真的不想研究它,但看看代码我确定它不会 玩两组骰子(4 个骰子 - PairOfDice 的每个声明由两个骰子组成)。

我认为用于玩游戏的一对骰子应该声明为类成员变量,而不是每次需要掷骰子时都声明一组新骰子。通过在 PairOfDice 类中添加 roll() 方法,您可以无限期地使用同一对骰子。下面是一个使用这两个类的简单示例,我们将掷 pair 10 次骰子:

public class JustADemo {

    private final PairOfDice dice = new PairOfDice();
    private int dice1;
    private int dice2;

    public static void main(String args[]) {
        // Done this way to avoid the need for statics.
        new EyesHaveIt().startDemo(); 
    }

    private void startDemo(String[] args) {
        // Roll a Pair of dice 10 times...
        for (int i = 0; i < 10; i++) {
            System.out.println("Roll #" + (i + 1) + ":");
            rollTheDice();
            System.out.println();
        }
    }

    private void rollTheDice() {
        dice.roll();
        dice1 = dice.getDie1();
        dice2 = dice.getDie2();
        System.out.println("Face of Die 1: --> " + dice1);
        System.out.println("Face of Die 2: --> " + dice2);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-06
    • 2013-11-24
    相关资源
    最近更新 更多