以下代码中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);
}
}
答案 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
数组无法执行此操作,它只接受非小数值(整数)。