从单个方法返回多个值

时间:2017-03-04 22:02:18

标签: java static-methods

我的考试中有一个问题。起初它很容易。让我解释一下这个问题:

  • 使用户指定要放置的整数(数组)

  • 数字应介于-1500至1500之间

  • (Tricky):创建一个计算投放数字百分比的方法,百分比为0,正数,负数。 (所有这些都应该在一个方法中,不返回字符串,字符串缓冲区,返回结果应该是一个double值)

我认为我做得对,但是当我实时测试它时,我运行的问题是它返回值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!")
        }
    })

1 个答案:

答案 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;

此处,countZerocountPoscountNeg都是整数,number.length也是整数。因此,当您将整数除以另一个整数时,您将得到一个整数。

由于countZerocountPoscountNeg都小于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;
}

或者,您可以将变量(countZerocountPoscountNeg)声明为double。