Почему мой метод CompareTo ничего не делает? - PullRequest
0 голосов
/ 23 апреля 2020
import java.io.File;
import java.util.PriorityQueue;
import java.util.Scanner;

public class Patient implements Comparable<Patient> {

    private String firstName;
    private String lastName;
    private String illness;
    private int severity;

    private Scanner x;

    public Patient(String first, String surname, String ill, int sever) {

        setFirstName(first);
        setLastName(surname);
        setIllness(ill);
        setSeverity(sever); 
    }

    public Patient() {
       // TODO Auto-generated constructor stub
    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String first) {
        firstName = first;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String surname) {
        lastName = surname;
    }

    public String getIllness() {
        return illness;
    }

    public void setIllness(String ill) {
        illness = ill;
    }

    public int getSeverity() {
        return severity;
    }

    public void setSeverity(int sever) {

        if (sever >= 1 && sever <= 5) {
            severity = sever;
        } else {
            System.out.println("Error");
        }
    }

    public int compareTo (Patient otherPatient) {

        if (getSeverity() > otherPatient.getSeverity()) {
            return -1;
        } else if (getSeverity() < otherPatient.getSeverity()) {
            return 1;
        } else {
            return 0;
       }
    }   

    public void openList() {
        try {
            x = new Scanner(new File(" *PATH*/patients(2).txt"));
        }
        catch(Exception e) {
            System.out.println("Could not read file");
        }
    }

    public void readList() {
        PriorityQueue<Patient> priority = new PriorityQueue<Patient>();

        while(x.hasNext()) {   

            firstName = x.nextLine();   
            lastName = x.nextLine();
            illness = x.nextLine();
            severity = x.nextInt();
            x.nextLine();

            priority.add(this);

            while (!priority.isEmpty()) {   

                System.out.println(priority.poll());        
            }   
       }        
    }

    public static void main(String[] args) {

        Patient p = new Patient();
        p.openList();
        p.readList();
   }

    @Override
    public String toString() {
        return "Patient [firstName=" + firstName + ", lastName=" + lastName + ", illness=" + illness + ", severity="
            + severity + "]";
    }

}

Он печатает что-то вроде этого:

 Patient [firstName=John, lastName=Smith, illness=heart attack, severity=5]

 Patient [firstName=Johnty, lastName=Smithy, illness=burn, severity=3]

У меня есть текстовый файл в Eclipse под названием Patients (2) в формате

first name

surname

illness 

illness severity

и затем имя для следующего пациента et c ....

Я хочу добавить пациентов в приоритетную очередь, а затем отсортировать их от наивысшей степени серьезности (сверху) до наименьшей

. Правильно добавляет их и печатает. их, но они не сортируются, и я не знаю почему.

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