Я полагаю, что ошибка, которую вы получаете, связана с этим циклом:
for (int i = 0; i < teamMatches.size(); i++) {
int team1Status = teamMatches.indexOf(1);
int team2Status = teamMatches.indexOf(2);
int team3Status = teamMatches.indexOf(3);
int team4Status = teamMatches.indexOf(4);
homeOrAway1.add(team1Status);
homeOrAway2.add(team2Status);
homeOrAway3.add(team3Status);
homeOrAway4.add(team4Status);
}
Имейте в виду, что это ваше заявление:
List < Integer[] > teamMatches
teamMatches
- это списокцелочисленного массива.Поэтому, когда вы звоните:
int team1Status = teamMatches.indexOf(1);
, вы не получаете то, что думаете.Вот что на самом деле teamMatches: ![Representation of teamMatches](https://i.stack.imgur.com/ChT60.png)
То, что вы на самом деле хотите, это:
for (int i = 0; i < teamMatches.size(); i++) {
Integer[] ints = teamMatches.get(i);
for (int j = 0; j < ints.length; j++) {
if (ints[j] == 1) homeOrAway1.add(j);
else if (ints[j] == 2) homeOrAway2.add(j);
else if (ints[j] == 3) homeOrAway3.add(j);
else if (ints[j] == 4) homeOrAway4.add(j);
}
}
Редактировать: я собираюсь добавить объяснение, так что повесьтев тесном.
teamMatches - это список массивов целых чисел.Массив является представлением 1,2,3,4 (скремблировано), что по сути является представлением для игры.Поскольку существует список этого, teamMatches - это список игр.
Integer[] ints = teamMatches.get(i)
- это то, что вы действительно хотите.Теперь переменная ints
является одиночной игрой.Из этой одиночной игры вы можете извлечь информацию о позициях каждой команды (не уверен насчет терминологии, извините).
Остальная часть внутреннего цикла должна быть понятной.Он перебирает массив целых чисел (положение команд) и добавляет текущий индекс к homeOrArray1 / 2/3/4 в зависимости от значения в индексе.
ПРИМЕЧАНИЕ: I сильно рекомендую никогда не использовать массив целых чисел, если нет веских причин для этого.Я верю, что вы действительно хотите List<Integer>
, потому что теперь вы можете просто сделать ints.indexOf(1/2/3/4);
вместо цикла for.
Очевидно, я не знаю спецификацию вашей программы, но при условии, что вы 'Если переопределить teamMatches
, то следующий код намного чище imo.
List<List<Integer>> teamMatches = new ArrayList<>();
...
Теперь весь цикл for можно заменить на:
for (List<Integer> teamPositions : teamMatches) {
homeOrAway1.add(teamPositions.indexOf(1));
homeOrAway2.add(teamPositions.indexOf(2));
//...
}