【发布时间】:2018-11-02 19:29:42
【问题描述】:
我正在尝试创建一个代表 Dice 的类,有时 Dice 会被欺骗,即得到一方的概率比其他方最多,所以要获得构造函数,我得到这个:
//sides and color are defined as integers
//sum as a double
public Dice(double[] probability) {
probability = new double[6];
sides = 6;
color = 0; //not relevant
lastFace = 1;
for(int i = 0; i < 6; i++){
sum += probability[i];
}
if(sum >= 0.9 && sum <= 1)
setTricky(probability); //method defined to set a boolean
else{
System.out.println("Sorry, but your probability is not valid.");
trciky = false;
}
}
所以,在 main 方法中,我有这样的东西:
Scanner sc = new Scanner(System.in);
double[] prob = new double[6];
System.out.println("Type the values of probability for each side of your Dice (it must to be 6).");
for (int i = 0; i < prob.length; i++){
prob[i] = sc.nextDouble();
}
Dice d2 = new Dice(prob);
当我为数组的值键入双精度值时(例如 {0.1, 0.1, 0.1, 0.5, 0.1 0.1}),它显示 sum 不在排名中。那么,我该怎么办?
【问题讨论】:
-
在你的构造函数中使用
probability = new double[6];,你用一个新的空数组的引用覆盖对传入数组的引用(意思是:新的双数组中的所有值都是0.0)。删除此行,您的问题就解决了 -
由于这个原因,您没有使用传递的参数:
probability = new double[6];删除它