int数组和双数组 - 差异

时间:2017-11-28 15:02:44

标签: java arrays

以下代码中int 数组与新double 数组之间的区别是什么?

public class TestTwoReview {
    public static void main(String[] args) {
        int ducky[] = { 21, 16, 86, 21, 3 };
        int sum = 0;

        for (int counter = 0; counter <ducky.length; counter++) {
            // adding all numbers in array
            sum += ducky[counter];
        }

        System.out.println("the sum of array is " + sum);

        double[] scores = new double[10];
        double total = 0;
        double average;

        for (int index = 0; index < scores.length; index++)
            total += scores[index];

        average = total / scores.length;
        System.out.println("the average is " + average);
    }
}

1 个答案:

答案 0 :(得分:1)

您的代码看起来并不像是在做有用的。也许这就是让你最困惑的事情。特别是第二部分基本上什么也没做。

分析

让我们仔细看看它。 int数组ducky包含一些数据。您迭代其所有元素并总结它们。因此sum正确包含所有条目的累计值,我猜这应该是147

第二部分初始化double数组,其中包含10元素的位置。

double[] scores = new double[10];

由于double原始数据类型,数组将预填充,每个条目的值为0.0

scores[0] => 0.0
scores[1] => 0.0
scores[2] => 0.0
...
scores[9] => 0.0

接下来,您类似地迭代所有这些条目,并在变量total中总结它们:

total += scores[index];

但是,由于每个条目scores[index]0.0,因此总和也为0.0。接下来计算平均值

average = total / scores.length;

如果我们输入值

average = 0.0 / 10
        = 0.0

所以average也是0.0

总而言之,第二部分错过了一些有意义的数据,否则它首先会计算总和 ,然后再计算平均值。

差分

但是,如果我们甚至假设scores会填充一些有意义的数据,会有什么不同?

嗯,唯一的区别是它还允许十进制值,仅此而已。

例如,您可以像

一样创建它
double[] scores = { 1.7, 2.3, 6.12, 9.1, 2.0 };

总和total将为21.22,平均值为2.122

int数组无法执行此操作,它只接受非小数值(整数)。