2017-02-08 18 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 и задаюсь вопросом, как я могу это исправить.

+4

* "Я получаю сообщение об ошибке" * - какая ошибка? Наверное, вы не можете сравнивать 'Object' и' int' ?! – luk2302

+2

Вы, кажется, путаете индекс 'i' в массиве с' objAr [i] ', который является значением в этом массиве. –

+0

Можете ли вы рассказать мне, как это будет скомпилировано if (objArr [i] <0 || objArr [i]> objArr.length) –

ответ

0

вы должны бросить исключение, когда вы получить индекс ввода i, который равен < 0 или> чем размер массива.

Как:

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); 
    } 
} 
+1

Это должно быть 'i> = size' как @xander упоминание – Absolut

+0

yep thats right, отредактировано – Zeromus

0

Кулак вы должны бросить expection, прежде чем войти в цикл и второй вам необходимо проверить индекс, а не значение объекта в индексе:

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