所以我只是想看看我的数组中的元素是否可以被总和整除,我认为我的for循环总结了数组的元素有什么问题,关于我应该怎么做的任何提示继续?
public static void main(String[] args) {
int apa[] = {3,3,3};
System.out.print(allEqual(apa));
}
public static boolean allEqual(int[] a) {
int summa = 0;
boolean svar = true;
for (int i = 0; i <= a.length; i++) {
summa +=a[i];
}
if (summa % a.length == 0) {
return svar;
} else {
svar = false;
return svar;
}
}
答案 0 :(得分:6)
Java中的数组索引范围从0
到length - 1
,因此对于长度为3
的数组,最大索引为2
。在到达for
之前停止length
循环,否则您将使用a[3]
离开数组的末尾,并且您将获得观察到的ArrayIndexOutOfBoundsException
。变化
for (int i = 0; i <= a.length; i++) {
到
for (int i = 0; i < a.length; i++) {
答案 1 :(得分:5)
你有:
for (int i = 0; i <= a.length; i++)
你可能意味着:
for (int i = 0; i < a.length; i++)
由于访问a[a.length]
始终会导致ArrayIndexOutOfBoundsException
(有效索引范围 [0,a.length-1] )。
如果你实际上不需要在循环中对索引本身做任何事情,你也可以使用这种语法来消除这种错误的可能性:
for (int value : a)
summa += value;
当然,所有这些都假定a != null
。
答案 2 :(得分:3)
public static void main(String[] args) {
int apa[] = {3,3,3};
System.out.print(allEqual(apa));
}
public static boolean allEqual(int[] a) {
int summa = 0;
boolean svar = true;
for (int i = 0; i < a.length; i++) { // <-- HERE
// if i == a.length, an ArrayIndexOutOfBoundsException will be raised
summa +=a[i];
}
if (summa % a.length == 0) {
return svar;
} else {
svar = false;
return svar;
}
}