在编写用于通知程序中断或返回的语句时,如果不满足条件并导致错误,则每次仍会执行if语句:java.lang.ArrayIndexOutOfBoundsException
我尝试大于等于==,都可以。并且我检查了“>”还是Java中的运算符。那为什么它仍然执行呢?
public class adjacentElementsProduct {
static int adjacentElementsProduct(int[] inputArray) {
if(inputArray ==null|| inputArray.length<0) return 0;
int res=Integer.MIN_VALUE;
for( int i=0; i<inputArray.length;i++){
int stop=i+1;
if((i+1) > inputArray.length) break;
res=Math.max(res,inputArray[i]*inputArray[i+1]);
}
return res;
}
'''
在这种情况下,由于'''if((i + 1)> inputArray.length)中断;''' 不起作用,因此错误消息是:java.lang.ArrayIndexOutOfBoundsException
答案 0 :(得分:0)
Java数组具有从零开始的索引,因此长度N的数组中的最后一个元素位于第(N-1)个元素。
EX:int[] a = {1, 2, 3}
,要访问元素3,我们将写入a[2]
或a[a.length - 1]
。
在您的情况下,循环将转到i = inputArray.length - 1
,因此,如果您调用inputArray[i + 1]
,则您正在调用inputArray[inputArray.length]
,这是超出范围的。为避免这种情况,您可以将循环结束条件修改为i < inputArray.length - 1
,也可以将if语句更改为
if((i+1) >= inputArray.length) break;
。