首页 > 解决方案 > 找到一个合适的棘手 Dice 构造函数

问题描述

我正在尝试创建一个代表 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;
    }
}

所以,在主要方法中,我有这样的东西:

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不在排名中。那么,我能做些什么呢?

标签: javaarraysrecursion

解决方案


正如已经指出的那样,这条线

probability = new double[6];

在您的构造函数中覆盖了传入的参数。这是因为您正在将包含概率的数组中的变量名称“概率”分配给一个新的双精度数组。

简单地取出那条线应该可以解决问题。


推荐阅读