我的考试中有一个问题。起初它很容易。让我解释一下这个问题:
使用户指定要放置的整数(数组)
数字应介于-1500至1500之间
我认为我做得对,但是当我实时测试它时,我运行的问题是它返回值0.0,0.0,0.0 ......或者只有当值落在时才返回正确的百分比相同的条件(例如全部为零)。
这是我的代码:(我希望你可以理解它)。我只是好奇,我不知道如何解决它。我也尝试过静态方法,遇到同样的问题。
ref.child("channels").observeSingleEvent(of: .childAdded, with: { (snapshot) in
guard let data = snapshot.value as! [String:AnyObject]? else { return print("Snapshot error!")}
if let player = data["players"] {
for player in player as! [String:[String:AnyObject]] {
print(player.key)
print(player.value as Any)
}
} else {
print("No player found!")
}
})
答案 0 :(得分:1)
我可以在您的代码中看到一个问题。
double total [] = new double [3];
total[0] = (countZero/number.length)*100;
total[1] = (countPos/number.length)*100;
total[2] = (countNeg/number.length)*100;
return total;
此处,countZero
,countPos
和countNeg
都是整数,number.length
也是整数。因此,当您将整数除以另一个整数时,您将得到一个整数。
由于countZero
,countPos
和countNeg
都小于number.length
,因此total
数组中的值为零。
示例:
System.out.println(2/3); // prints 0
System.out.println(2.0/3); // prints 0.6666666666666666
System.out.println((double)2/3); // prints 0.6666666666666666
有几种方法可以解决您的问题。其中之一是,简单地将整数乘以1.0,同时将其除以另一个整数。
你可以这样做。
public double [] allCalcs(){
// your code goes here
double total [] = new double [3];
total[0] = (countZero * 1.0 / number.length) * 100;
total[1] = (countPos * 1.0 / number.length) * 100;
total[2] = (countNeg * 1.0 / number.length) * 100;
return total;
}
或者,您可以将变量(countZero
,countPos
和countNeg
)声明为double。