java - 找到一个合适的棘手 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
不在排名中。那么,我能做些什么呢?
解决方案
正如已经指出的那样,这条线
probability = new double[6];
在您的构造函数中覆盖了传入的参数。这是因为您正在将包含概率的数组中的变量名称“概率”分配给一个新的双精度数组。
简单地取出那条线应该可以解决问题。
推荐阅读
- javascript - 函数只在for循环中执行一次
- java - 社交网络应用程序:个人资料照片显示不正确
- python - 二叉树中特定节点的总和
- pygame - pygame没有安装在jetson nano上
- ssis - 如何将 SSDT VS 2015 包构建到生产服务器?
- python - RuntimeError ,错误打开 ,系统错误 ,读取 wav 文件时
- python - 如何从有序字典中选择最佳对?
- python - 通过 Python 中的 Keras 库模拟在 MATLAB 中设计的 LSTM 网络
- angular - Firebase v9 在移动设备上加载大型 iframe.js (263K)
- json - Json 和 Chrome 浏览器 - 如何避免隐藏属性?