簡體   English   中英

有沒有更好的方法來處理 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

怎么樣:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM