[英]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
?
怎么樣:
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 == 0 ? 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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.