数组的Sum元素,我做错了什么?

时间:2014-03-10 22:10:34

标签: java arrays

所以我只是想看看我的数组中的元素是否可以被总和整除,我认为我的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;
    }

}

3 个答案:

答案 0 :(得分:6)

Java中的数组索引范围从0length - 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;
    }

}