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

Geo*_*e12 0 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;
    }

}
Run Code Online (Sandbox Code Playgroud)

rge*_*man 6

Java中的数组索引从0直到不等length - 1,因此对于长度数组3,最大索引是2.for在你到达之前停止你的循环length,否则你将在阵列结束时运行a[3],你会得到ArrayIndexOutOfBoundsException你观察到的.更改

for (int i = 0; i <= a.length; i++) {
Run Code Online (Sandbox Code Playgroud)

for (int i = 0; i < a.length; i++) {
Run Code Online (Sandbox Code Playgroud)


Jas*_*n C 5

你有:

for (int i = 0; i <= a.length; i++)
Run Code Online (Sandbox Code Playgroud)

你可能意味着:

for (int i = 0; i < a.length; i++)
Run Code Online (Sandbox Code Playgroud)

因为访问a[a.length]总是会导致ArrayIndexOutOfBoundsException(有效索引范围是[0,a.length-1]).

如果你实际上不需要在循环中对索引本身做任何事情,你也可以使用这种语法来消除这种错误的可能性:

for (int value : a)
    summa += value;
Run Code Online (Sandbox Code Playgroud)

当然,所有这一切都假定a != null.