我认为我的问题出在PairOfDice类上,因为我只需要在EyesHaveIt类中使用包含两个骰子值的对象。我不断收到类似的错误:PairOfDice.java:16:错误:预期使用类,接口或枚举公共诠释getDie1()^
PairOfDice.java:19:错误:预期的类,接口或枚举}^
PairOfDice.java:21:错误:预期的类,接口或枚举公共诠释getDie2()^
PairOfDice.java:24:错误:预期的类,接口或枚举}^
EyesHaveIt.java:44:错误:找不到符号int die1 = dieOne.getDieOneValue();^符号:方法getDieOneValue()位置:变量dieOne类型为PairOfDiceEyesHaveIt.java:45:错误:找不到符号
这是我尝试修复的尝试。谢谢!
这是我的模具课:
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类的类。
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。在相同的类中,声明两个Die(die1和die2)并将它们分别分配给die1Value和die2Value:
public PairOfDice() {
Die die1 = new Die();
Die die2 = new Die();
die1Value = die1;
die2Value = die2;
}
您不能执行此操作,因为和die2不是int,它们是Die。另外,die1和die2也应该已声明为实例成员变量。应该做的是:die1
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();
}
}
现在,和die2Value实际上被分配了int(每个骰子的随机掷骰值)。我对称为die1Value
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().startGame();
}
private void startGame(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);
}
}