尝试运行将测试表的最大值的循环时出现错误。

该表为tabl,长度为c

int a=0;
int b=0;
while (a<=c) {
    int d = tabl[a];
    int e = tabl[a+1];
    if(d < e)
        b = e;
    else
        b = d;
    a++;
}


这很简单,它首先比较tabl[0]tabl[1],然后保存较大的一个,然后一直进行到直到表的长度a = c,然后完成循环,将表中的最大值保存到表中。 b

但是,当我运行此程序时,我得到一个java.lang.ArrayIndexOutOfBoundsException错误代码,有人可以帮忙吗?谢谢!

最佳答案

当您在循环中达到a = c - 1时,您的代码正在寻找tabl[c-1]tabl[c]的值。但是,由于表的长度为c,因此会导致java.lang.ArrayIndexOutOfBoundsException。请注意,在Java中,数组的索引为0,也就是说,第一个元素的索引为0,最后一个元素的索引为(length-1)。

您可以使用for-each构造编写类似的内容:

int max = 0;
for (int element : tabl) {
    if (element > max) {
        max = element;
    }
}


或简单的for循环

int max = 0;
for (int i = 0; i < tabl.length; i++) {
    int element = tabl[i];
    if (element > max) {
        max = element;
    }
}

09-11 04:38