Почему этот бесконечный цикл - PullRequest
0 голосов
/ 25 апреля 2020

Извините, возможно, это новый ie вопрос. Но это задание от моего лектора, и срок должен быть завтра. Я пробовал много способов и отследил вывод, но это все равно привело к бесконечному l oop. Пожалуйста, помогите.

Заданный вопрос:

Удалите пропущенных студентов из studentList и переместите их в новый PassList LinkedList

Основное приложение:

StudentLinkedList failList = studentList; //assume studentList is already existed with some data
StudentLinkedList passList = new StudentLinkedList();

Student s = (Student)studentList.removeFirst(); //the return type was Object (it was user-defined LinkedList)
//so i use dynamic binding to change it to student
while(s != null) {
  if(s.isPass()) { //return true if student passed
    System.out.println("pass"); //i track my output with this
    passList.addFirst(s);
  } else {
    System.out.println("fail"); //track output
    failList.addFirst(s);
  }
  s = (Student)studentList.removeFirst();
}

Вывод был бесконечным l oop между отказом и проходом, который, как я полагаю, l oop был, потому что s никогда не был нулевым.

Вот удаление первого определения метода:

public Object removeFirst() {
   if(head == null) { //check if the list was empty
     return null;
   } else {
     current = head;
     head = head.next;
     if(head == null) {
        tail = null;
     }
     return current.element;
   }
}

Я учусь на втором курсе java. Ваша помощь будет оценена. Большое вам спасибо.

1 Ответ

2 голосов
/ 25 апреля 2020

Из кода вы присваиваете StudentLinkedList failList = studentList;. Это не создает копию studentList и не выделяет новую память, а скорее означает, что failList указывает на studentList.

Так что любые изменения, сделанные в failList, фактически изменяются в studentList.

Это имело бы смысл, почему существует бесконечное число l oop, когда оно попадает в ученика, который потерпел неудачу, поскольку вы фактически просто добавляете ученика обратно в начальный studentList, а не заново создан failList как задумано.

...