Size: a a a

2020 May 22

ЯФ

Яша Ф. in Java & Co
но, так работает. спасибо. попытаюсь разобраться теперь в этом)
источник

IF

Ilya Frontend in Java & Co
Яша Ф.
```
    public Offer[] removeById(int id) {
       int length = offers.length - 1;
       Offer[] temp = new Offer[length];
       int index = 0;
       for (Offer offer : offers) {
           if (offer.getId() != id) {
               temp[index] = offer;
               index++;
           }
       }
       offers = temp;
       return offers;
   }
```

если я пытаюсь произвести удаление по несуществующему ид, то получаю ошибку длины массива. так как на деле массив остается не изменным, а исходя из метода мы получаем длинна - 1. как быть?
счет массива идет с 0, допустим если в массиве 3 элемента то они лежат под индексами 0, 1, 2 , length вернет 3- пушо там 3 элемента, поэтому length -1
источник

ЯФ

Яша Ф. in Java & Co
Ilya Frontend
счет массива идет с 0, допустим если в массиве 3 элемента то они лежат под индексами 0, 1, 2 , length вернет 3- пушо там 3 элемента, поэтому length -1
это я понимаю))) тут идет вопрос в том, что у меня есть метод по удалению элемента в массиве. значит мы заведомо знаем что у нас массив будет короче на 1 единицу. и это типа работает. но если я вдруг пытаюсь удалить не существующий элемент массива, то массив тупо купируется и от сюда происходит ошибка
java.lang.ArrayIndexOutOfBoundsException: Index 4 out of bounds for length 4
источник

IF

Ilya Frontend in Java & Co
Яша Ф.
это я понимаю))) тут идет вопрос в том, что у меня есть метод по удалению элемента в массиве. значит мы заведомо знаем что у нас массив будет короче на 1 единицу. и это типа работает. но если я вдруг пытаюсь удалить не существующий элемент массива, то массив тупо купируется и от сюда происходит ошибка
java.lang.ArrayIndexOutOfBoundsException: Index 4 out of bounds for length 4
ну да, но как это умные люди решили я думаю можно посмотреть где то в исходниках аррай листа
источник

N

Northwood in Java & Co
Яша Ф.
это я понимаю))) тут идет вопрос в том, что у меня есть метод по удалению элемента в массиве. значит мы заведомо знаем что у нас массив будет короче на 1 единицу. и это типа работает. но если я вдруг пытаюсь удалить не существующий элемент массива, то массив тупо купируется и от сюда происходит ошибка
java.lang.ArrayIndexOutOfBoundsException: Index 4 out of bounds for length 4
Логично. Если ты обращаешься к несуществующему элементу, то кидает эксепшн.
источник

ЯФ

Яша Ф. in Java & Co
Northwood
Логично. Если ты обращаешься к несуществующему элементу, то кидает эксепшн.
да. а как это ошибку можно в таком случае отловить? мне насамом деле нужно тест сделать на удаление несуществующего. и значит я должен получить ошибку.... какой-то assert?
источник

IF

Ilya Frontend in Java & Co
Яша Ф.
да. а как это ошибку можно в таком случае отловить? мне насамом деле нужно тест сделать на удаление несуществующего. и значит я должен получить ошибку.... какой-то assert?
в метод добавь throws ArrayIndexOutOfBoundsException
источник

ЯФ

Яша Ф. in Java & Co
а куда именно? у меня есть такой тест:
    @Test
   void shouldRemoveByNoneExistId() {
       Offer[] expected = new Offer[]{tick1, tick2, tick3, tick4, tick5};
       assertArrayEquals(expected, repository.removeById(6));
   }

но быть может что-то можно типа assertNull. только с out of bounds  что есть?
источник

N

Northwood in Java & Co
Яша Ф.
а куда именно? у меня есть такой тест:
    @Test
   void shouldRemoveByNoneExistId() {
       Offer[] expected = new Offer[]{tick1, tick2, tick3, tick4, tick5};
       assertArrayEquals(expected, repository.removeById(6));
   }

но быть может что-то можно типа assertNull. только с out of bounds  что есть?
Junit какой?
источник

ЯФ

Яша Ф. in Java & Co
5
источник

IF

Ilya Frontend in Java & Co
Яша Ф.
а куда именно? у меня есть такой тест:
    @Test
   void shouldRemoveByNoneExistId() {
       Offer[] expected = new Offer[]{tick1, tick2, tick3, tick4, tick5};
       assertArrayEquals(expected, repository.removeById(6));
   }

но быть может что-то можно типа assertNull. только с out of bounds  что есть?
источник

ЯФ

Яша Ф. in Java & Co
ооо. спс. ща попробую
источник

N

Northwood in Java & Co
Блин junit exception test в гугле запомни. я постоянно забываю эту лямбда конструкцию. а ментор требует максимального покрытия тестами.
источник

ЯФ

Яша Ф. in Java & Co
еее... спасибо большое))))
    @Test
   void shouldRemoveByNoneExistId() {
       assertThrows(ArrayIndexOutOfBoundsException.class, () -> repository.removeById(10));
   }
источник

ЯФ

Яша Ф. in Java & Co
Northwood
Блин junit exception test в гугле запомни. я постоянно забываю эту лямбда конструкцию. а ментор требует максимального покрытия тестами.
да. я тоже забыл про эту лямбду. предыдущая ДЗ была с этим же. пока Илья не ткнул носом, не вспомнил((( надеюсь  практикой вошьется под корку🤣
источник

N

Northwood in Java & Co
кстати тесты помогают писать код более чисто. например прописывать обнуления статических полей класса или избавляться от кондишенов в wile(true) лупах, которые junitом не тестируются.
источник

ЯФ

Яша Ф. in Java & Co
ну вот именно по этому я и решил что в цикле что-то не так. а вот с советом от @ILyaCyclone работает. но нужно понять. что-то пока у меня с коллекциями не складывается... сложно пока
источник

ЯФ

Яша Ф. in Java & Co
в любом случае спасибо. не первый раз помогаете :)
источник

AB

Aleksey Budaev in Java & Co
После нажатия на submit мне в doPost как аттрибут искать ? который я в doGet передавал ?
источник

AB

Aleksey Budaev in Java & Co
А если я допустим checkbox выделил и сабмит нажал, что в аттрибутах реквеста искать ? value чекбокса?
источник