我正在尝试创建一个掷2个骰子的程序,给出die1
的数量和die2
的数量,然后将它们加在一起。我正在获得骰子的随机数,但是将它们加在一起(求和)时,总数是不正确的。
我尝试将faceValue
,numValue
更改为die1.getFaceValue + die2.getFaceValue
,但是总和总是错误的。如果有人可以查看代码,看看我是否还把其他所有内容都放在正确的位置。预先感谢。
package assignment3;
import java.util.*;
public class Die {
private static final int DEFAULT_NUM_FACES =6;
private static final int value = 1;
private static int faceValue;
private static int numFaces;
//die(int, int) method- constructor that initialized the instance variables to the parameter values
public Die(int die1, int die2) {
}
//Die(int) method- constructor that initialized the instance variables faceValue to the parameter value and numFaces to
//DEFAULT_NUM_FACES
public Die(int value) {
faceValue = value;
numFaces = DEFAULT_NUM_FACES;
}
//die() default constructor that initialized both instance variables to DEFAULT_NUM_FACES
public Die() {
this.faceValue=DEFAULT_NUM_FACES;
this.numFaces=DEFAULT_NUM_FACES;
}
//die(die) copy constructor
public Die(Die otherDie)
{
new Die();
}
// getFaceValue() - returns the faceValue of the instance
public int getFaceValue() {
return faceValue;
}
// getNumFaces - return the numFaces of the Die
public int getNumFaces()
{
return numFaces;
}
//setFaceValule - sets face values of the die to supplied value
public int setValue(int faceValue) {
return faceValue;
}
//toString returns a string representation of the face value in the form of (faceValue)
public String toString()
{
String result = Integer.toBinaryString(faceValue);
return result;
}
//Roll - rolls the die to generate a new face value. The instances face value will be set to this new value.
//You can use the random method of the Math class to accomplish this task. The random method generates a random number between 0 and 1.
//by multiplying this number by number of faces, casting the result to an integer and adding one to it.
//you will be able to generate a random number between 1 and numFaces
public int roll()
{
faceValue = (int )(Math.random()*numFaces+1);
return faceValue;
}
public static void main(String[] args) {
Die die1;
Die die2;
int sum;
die1= new Die();
die1.roll();
die2= new Die();
die2.roll();
sum = (die1.getFaceValue())+(die2.getFaceValue()) ;
System.out.println("Toss 0 generated a " + die1.getFaceValue()+ " and a " + die2.getFaceValue() +" for a total of " +sum);
}
}
这应该掷出die1并给我die1的面值,然后应该给我die2的值,然后应该合计两个骰子的数量。
答案 0 :(得分:0)
每个roll
仅应致电Die
。
每次调用roll
时,它都会创建一个新的随机数并将其分配给faceValue
die1= new Die();
die1.roll();
die2= new Die();
die2.roll();
然后使用faceValue
sum = (die1.getFaceValue())+(die2.getFaceValue()) ;
答案 1 :(得分:0)
我认为您应该有一个实例变量而不是类变量。
基本上,与该类的所有对象(实例)共享的只是该变量的一个副本。如果该变量被更改,则所有其他类对象将看到该更改。
只需从您的本地变量中删除“静态”关键字即可。
public class Die {
private static final int DEFAULT_NUM_FACES = 6;
private int faceValue;
private int numFaces;
public Die() {
this.faceValue = DEFAULT_NUM_FACES;
this.numFaces = DEFAULT_NUM_FACES;
}
// getFaceValue() - returns the faceValue of the instance
public int getFaceValue() {
return faceValue;
}
// getNumFaces - return the numFaces of the Die
public int getNumFaces() {
return numFaces;
}
// setFaceValule - sets face values of the die to supplied value
public int setValue(int faceValue) {
return faceValue;
}
// toString returns a string representation of the face value in the form of
// (faceValue)
public String toString() {
String result = Integer.toBinaryString(faceValue);
return result;
}
public int roll() {
faceValue = (int) (Math.random() * numFaces + 1);
return faceValue;
}
public static void main(String[] args) {
Die die1;
Die die2;
int sum;
die1 = new Die();
die1.roll();
die2 = new Die();
die2.roll();
sum = (die1.getFaceValue()) + (die2.getFaceValue());
System.out.println("Toss 0 generated a " + die1.getFaceValue() + " and a " + die2.getFaceValue()
+ " for a total of " + sum);
}
}
祝你有美好的一天。