Помощь с домашним заданием. Я должен "написать" вид, я не могу использовать сортировки API - PullRequest
3 голосов
/ 24 сентября 2011

Мне нужно написать программу, которая принимает аргументы из командной строки.Есть 3 класса.Основной класс приложения, класс, определяющий каждого члена Зала славы, а затем класс Зала славы, который создает массив членов Зала славы.Атрибутами класса HallOFFameMember являются firstName, lastName, yearInducted и sport.Я должен написать метод сортировки в классе HallOfFame, который сортирует по году введения.Я пытался сделать это с помощью сопоставимой утилиты, но я не думаю, что это сработает.

Здесь часть задания, в которой написано, что сортировка написана, поэтому я не могу использовать Array.sort () или что-либо подобное.

"Также определите метод в классе HallOfFame с именем sortMembersкоторый возвращает массив объектов HallOfFameMember, который содержит объекты в массиве members, отсортированные по году индукции. Примечание: сортировка, выполняемая в методе sortMembers, не должна использовать метод сортировки из API. Вы должны написать свой собственныйподпрограмма сортировки (например, пузырьковая сортировка была бы приемлемой). "

Я не уверен, как написать запись для атрибута объекта в массиве.Буду очень признателен за любую помощь, которая поможет мне понять, как это сделать.Все, что я нахожу, указывает на использование метода Array.sort и compareTo, который я не могу использовать.

** edit ** Вопрос в том, может ли кто-нибудь указать мне, где я могу прочитать или найти примеры того, как написать свой собственныйсортировать по атрибуту в массиве объектов?Я рассмотрю предложение об использовании сопоставимого, поскольку к этому я и стремился изначально, просто не смог заставить его работать.

     public class HW3 {


        public static void main(String[] args) throws Exception {

            if (args.length % 4 != 0) {
                throw new Exception(
                        "First Name, Last Name, Year Inducted, Sport not entered correctly");
            }

            HallOfFame hallOfFameList = new HallOfFame();
            hallOfFameList.setNumberOfMembers(args.length / 4);

            HallOfFameMember[] tempMembers = new HallOfFameMember[args.length / 4];


            for (int i = 0; i < args.length; i += 4) {
                tempMembers[i/4].setFirstName(args[i]);
                tempMembers[i/4].setLastName(args[i+1]);
                tempMembers[i/4].setYearInducted(Integer.parseInt(args[i+2]));
                tempMembers[i/4].setSport(args[i+3]);
            }

            hallOfFameList.setMembers(tempMembers);
            HallOfFameMember[] sortedMembers = null;
            hallOfFameList.sortMembers(sortedMembers);
            HallOfFame.printReport(sortedMembers);


        }


    }



    public class HallOfFameMember {
    private String firstName;
    private String lastName;
    private String sport;
    private int yearInducted;

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public String getSport() {
        return sport;
    }

    public void setSport(String sport) {
        this.sport = sport;
    }

    public int getYearInducted() {
        return yearInducted;
    }

    public void setYearInducted(int yearInducted) {
        this.yearInducted = yearInducted;
    }

    }
      public class HallOfFame {
private HallOfFameMember[] members;
private int numberOfMembers;

public HallOfFameMember[] getMembers() {
    return members;
}

public void setMembers(HallOfFameMember[] members) {
    this.members = members;
}

public int getNumberOfMembers() {
    return numberOfMembers;
}

public void setNumberOfMembers(int numberOfMembers) {
    this.numberOfMembers = numberOfMembers;
}

public void sortMembers(HallOfFameMember[] sortedMembers){


}

public static void printReport(HallOfFameMember[] print){
    System.out.println("Java Sports Hall of Fame Inductees\n\n");
    System.out.printf("%-30s\t%-30s\t%-30s\n","Name","Year Inducted","Sport");
    for(int i = 0; i < print.length; i++)
    System.out.printf("%-30s\t%-30s\t%-30s\n", print[i].getLastName()+","+print[i].getFirstName(), print[i].getYearInducted(), print[i].getSport());
    }

}

1 Ответ

5 голосов
/ 24 сентября 2011

Чтобы усилить утверждения, сделанные в моем комментарии:

Так как это домашнее задание, большинство из нас ограничат наши советы, но мы можем помочь вам интерпретировать задание. Я не вижу в инструкциях ничего, что мешало бы вам использовать Comparator<HallOfFameMember> или реализовывать Comparable<HallOfFameMember>, и на самом деле я бы сделал то или другое.

Однако вы должны написать свой собственный метод сортировки, и я бы сделал это и использовал бы вспомогательный класс Comparator или интерфейс Comparable, чтобы помочь с сортировкой. Я бы пошел в Википедию, прочитал о алгоритмах сортировки и выбрал бы самый простой, возможно, пузырьковый тип, так как вы не оценивались по скорости для этого задания, просто по его выполнению и правильному выполнению.

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