цикл Java, пока список объектов не пуст - PullRequest
0 голосов
/ 02 июня 2018

Этот код пытается отсортировать оценки по возрастанию.

Мой код:

public static Grades sort(Grades mergedGrades, Grades repeat) {
Grades sortedGrades = new Grades();
Grade highComp = null;
Grade highest = mergedGrades.get(0);
int index = 0;
for (int j = 0; j < mergedGrades.size(); j++) {
     highComp = mergedGrades.get(j);
     if (highComp.getGpa() > highest.getGpa()) {
         highest = highComp;
         //debug: System.out.println("getGpa: "+highest.getGpa());
         index = j;
     }
}
sortedGrades.add(highest);
mergedGrades.remove(index);

Каждый раз, когда найден максимальный результат, он добавляется к объекту sortedGrades и удаляет оценки с индексом.Тем не менее, я не знаю, как сделать это петлей, пока она не станет пустой.Пожалуйста, читайте мне лекции.спасибо.

класс профессора:

public int size() {
    return this.size;
}

public boolean contains(Grade grade) {

    for(int i = 0; i < this.size; i++) {
        if(this.gradeArray[i].equals(grade)) {
            return true ;
        }
    }
    return false;
}

Ответы [ 2 ]

0 голосов
/ 02 июня 2018

В соответствии с этим классом:

public int size() {
    return this.size;
}

public boolean contains(Grade grade) {
    for(int i = 0; i < this.size; i++) {
        if(this.gradeArray[i].equals(grade)) {
            return true ;
        }
    }
    return false;
}

Вы можете использовать метод size(), чтобы получить размер.

Вы можете поместить свою логику в цикл while, который должен повторяться до mergedGrades.size() > 0.

public static Grades sort(Grades mergedGrades, Grades repeat) {
    Grades sortedGrades = new Grades();
    Grade highComp = null;
    Grade highest = mergedGrades.get(0);
    int index = 0;

    while (mergedGrades.size() > 0) {        
        for (int j = 0; j < mergedGrades.size(); j++) {
            highComp = mergedGrades.get(j);
            if (highComp.getGpa() > highest.getGpa()) {
                highest = highComp;
                //debug: System.out.println("getGpa: "+highest.getGpa());
                index = j;
            }
         }
         sortedGrades.add(highest);
         mergedGrades.remove(index);
     }
}
0 голосов
/ 02 июня 2018

Если вы хотите использовать цикл while, вы можете использовать:

while(mergedGrades.size() > 0)

Или вы можете использовать вложенный цикл for:

int initialMergedGradesLength = mergedGrades.size()
for(int i = 0; i < initialMergedGradesLength; i++)

Или это улучшено для цикла:

for(Grade mergedGrade : mergedGrades)

хотя я не уверен, что последний скомпилируется.

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