Использование условного оператора с ArrayList.size () - PullRequest
0 голосов
/ 03 февраля 2020

Я пытался использовать оператор if-else как условие для добавления элементов в список массивов. Тем не менее, он продолжал добавлять еще один элемент выше условия.

private ArrayList<Musician> songMusicians;
this.songMusicians = new ArrayList<>();
Musician musician = new Musician(name);
if (songMusicians.size() < 6) { //same output for (songMusicians.size() <= 5)
    songMusicians.add(musician);
} else {
    System.out.println("You can't have more than 5 musicians per song");
}

Таким образом, вместо добавления 5 элементов в список массивов songMusicians, он добавил 6 элементов.

Ответы [ 2 ]

5 голосов
/ 03 февраля 2020

Предположим, что в списке 5 элементов, и когда вы говорите < 6, он возвращает true, а затем вы добавляете еще один, который составляет 6 элементов в списке.

Просто измените его на songMusicians.size() < 5.

3 голосов
/ 03 февраля 2020

songMusicians.size () <5 используйте это в условии if. </p>

в соответствии с вашим кодом (i <6), l oop будет выполняться 6 раз, то есть 0-1-2-3- 4-5, и даже если вы делаете (я <= 5), то l oop все равно будет работать 6 раз, то есть 0-1-2-3-4-5. Вы должны написать (i <= 4) или (i <5), чтобы l oop запускался 5 раз, т.е. 0-1-2-3-4 - </p>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...