我试图总结一个数组中的所有元素。
我需要为int i = ______;
空白区域添加什么才能使其正常工作?
public static int sumArray(int [] A){
int sum = 0;
int i = ___________ ;
while(i>=0){
sum = sum + A[i];
i--;
}return sum;
}
答案 0 :(得分:1)
我试图总结一个数组中的所有元素。对于'int i = ______;'的空白,我需要输入什么使这项工作?
您应该通过执行A
将数组i
的大小指定为i = A.length - 1;
。
或者,您可以使用for
循环代替while
。
以下是代码段:
public static int sumArray(int [] A){
int sum = 0;
for(int x : A) {
sum += x;
}
return sum;
}
答案 1 :(得分:0)
要回答您的问题,您应将int i
设为A.length - 1
。您希望length - 1
因为Arrays
被编入索引为0,这意味着单独使用length
会导致您IndexOutOfBoundsException
。
您的方法应如下所示:
public static int sumArray(int[] A) {
int sum = 0;
int i = A.length - 1;
while (i >= 0) {
sum = sum + A[i];
i--;
}
return sum;
}
然而,你可以用更清洁的方式做到这一点。
1)使用Java 8,您可以使用IntStream
,如下所示:
public static int sumArray(int[] A) {
return IntStream.of(A).sum();
}
2)您可以使用for
循环:
public static int sumArray(int[] A) {
int sum = 0;
for(int i = 0; i < A.length; i++){
sum += A[i];
}
return sum;
}
3)您可以使用增强的for
循环:
public static int sumArray(int[] A) {
int sum = 0;
for(int i : A){
sum += i;
}
return sum;
}
答案 2 :(得分:0)
您已经编写了代码以获得总和。 i
只需从A.length
开始。
还有很多其他方法可以获得总和:使用增强型&#34;每个&#34;环;使用IntStream.of(A).sum()
;其他图书馆方法。