有没有更好的方法来处理 IndexOutOfBoundsException?
is there any better way to handel IndexOutOfBoundsException?
int sum(int[] arr,int size,int suma){
if(size < 0) return suma;
return sum(arr,size-1, suma+arr[size]);
}
这段代码工作正常,因为它在大小小于零时中断,但在调试时也会给出 java.lang.IndexOutOfBoundsException : Invalid array index: -1
。
我还能做些什么来避免这种情况 IndexOutOfBoundsException
?
怎么样:
public static int sum(int[] arr,int size,int suma){
if (size < 1) return suma;
return sum(arr,size-1, suma+arr[size-1]);
}
无论如何索引都不应该等于大小,因为索引从 0 开始。
数组的最小索引是0
,所以你最后应该把arr[length - 1]
加到最后的总和上。因此,如果长度为 0
;
,则应停止递归
public static int sum(int[] arr, int length, int sum) {
return length < 1? sum : sum(arr, length - 1, sum + arr[length - 1]);
}
演示:
int[] arr = { 1, 2, 3, 4, 5, 6 };
System.out.println(sum(arr, arr.length, 1000)); // 1021
int sum(int[] arr,int size,int suma){
if(size < 0) return suma;
return sum(arr,size-1, suma+arr[size]);
}
这段代码工作正常,因为它在大小小于零时中断,但在调试时也会给出 java.lang.IndexOutOfBoundsException : Invalid array index: -1
。
我还能做些什么来避免这种情况 IndexOutOfBoundsException
?
怎么样:
public static int sum(int[] arr,int size,int suma){
if (size < 1) return suma;
return sum(arr,size-1, suma+arr[size-1]);
}
无论如何索引都不应该等于大小,因为索引从 0 开始。
数组的最小索引是0
,所以你最后应该把arr[length - 1]
加到最后的总和上。因此,如果长度为 0
;
public static int sum(int[] arr, int length, int sum) {
return length < 1? sum : sum(arr, length - 1, sum + arr[length - 1]);
}
演示:
int[] arr = { 1, 2, 3, 4, 5, 6 };
System.out.println(sum(arr, arr.length, 1000)); // 1021