Из-за j > ListPerson.size()
в следующей строке
for (int j = i + 1; j > ListPerson.size(); j++)
этот l oop вообще не выполняется.
Когда i = 0
-----> j = 1
-----> условие оценивается как 1 > 3
(т.е. j > ListPerson.size()
)
Как вы можете понять, 1 > 3
равно false
, и, следовательно, l oop не получает Выполнено.
Вам необходимо изменить его на
for (int j = i + 1; j < ListPerson.size(); j++)
Кроме этой проблемы, логика сортировки c также неверна. Вместо того, чтобы менять местами людей, вы просто меняете их имена. Чтобы устранить проблему, замените
String temp1;
int temp2;
for (int i = 0; i < ListPerson.size(); i++) {
for (int j = i + 1; j > ListPerson.size(); j++) {
if (ListPerson.get(i).age > ListPerson.get(j).age) {
temp1 = ListPerson.get(j).nom;
ListPerson.get(j).nom = ListPerson.get(i).nom;
ListPerson.get(i).nom = temp1;
temp2 = ListPerson.get(j).age;
ListPerson.get(j).age = ListPerson.get(i).age;
ListPerson.get(i).age = temp2;
}
}
}
на
Person temp = null;
for (int i = 0; i < ListPerson.size(); i++) {
for (int j = i + 1; j < ListPerson.size(); j++) {
if (ListPerson.get(i).age > ListPerson.get(j).age) {
temp = ListPerson.get(i);
ListPerson.set(i, ListPerson.get(j));
ListPerson.set(j, temp);
}
}
}
Однако элегантным способом было бы использовать Collections.sort
вместо сортировки таким способом.
Не стесняйтесь комментировать в случае каких-либо сомнений / проблем.