2017-02-08 24 views
-3

私の任務のために、手動でIndexOutOfBoundsExceptionを追加するよう求められました。例外をスローする

public int get(Object[] objArr){ 
    size = objArr.length; 
    for(int i = 0; i < size; i++) 
     if(objArr[i] < 0 || objArr[i] > objArr.length) 
     { 
      throw new IndexOutOfBoundsException("I must be greater than 0 and less than " + size); 
     } 

私は見てループするコードを取得し、0未満の数値をチェックしようとしていると、そのインデックスは、ユーザが宣言された配列の外側にあります。 if文でエラーが発生しましたが、それをどのように修正できるか不思議でした。あなたはときに例外をスローする必要が

if(i < 0 || i >= objArr.length) 
+4

* * "私はエラーが取得しています" - どのようなエラーが?おそらく 'Object'と' int'を比較できないでしょうか? – luk2302

+2

配列の 'i'インデックスとその配列の値である' objAr [i] 'を混同しているようです。 –

+0

(objArr [i] <0 || objArr [i]> objArr.length) –

答えて

0

:あなたがループに入力すると第二あなたがインデックスではなく、インデックスのオブジェクトの値をチェックする必要があります前に、

+1

@ xanderのように 'i> = size'と書かれています – Absolut

+0

yep thats right、edited – Zeromus

0

拳あなたはexpectionをスローする必要があります< 0または配列のサイズより大きい入力インデックスiを取得します。

同様:

public void get(Object[] objArr, Integer i){ 
    size = objArr.length; 
    if(i<0 || i >= size){ 
     throw new IndexOutOfBoundsException("I must be greater than 0 and less than " + size); 
    } 
}