Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2-й семестр / Лаб.работы / Мет.ук. к л.р.8.doc
Скачиваний:
60
Добавлен:
12.03.2016
Размер:
193.54 Кб
Скачать

Задание 2

Изменить программу, созданную на Java на основе задания 2 лабораторной работы № 4. Добавить в класс, созданный на основе индивидуального варианта, поле типа Calendar и выполнить сортировку объектов по этому полю. Использовать в программе перечислимый тип данных.

Пример 2

В листинге 2 представлена программа, в которой формируется исходный список студентов, список студентов с минимальным рейтингом, а также осуществляется поиск информации о рейтинге студента по его фамилии. Исходный список студентов сортируется по фамилии, рейтингу и дате рождения студента. Для описания даты рождения студента используется класс Calendar из пакета java.util. В программе используется перечислимый тип данных для задания варианта сортировки.

Для создания программы использовалась среда разработки NetBeans IDE 8.0. На рисунке 3 показан состав проекта программы.

Рисунок 3 – Состав проекта программы

Создание проекта в NetBeans: Файл -> Создать проект -> Java -> Приложение Java.

Компиляция, сборка и выполнение проекта: Выполнить -> Запустить проект.

На рисунке 4 показан результат выполнения программы.

Листинг 2

// Primer.java

package primer;

import java.util.*;

class Student implements Comparable <Student>

{ private String fam;

private String name;

private int grade; //рейтинг

private Calendar date;

public Student(String fam, String name, int grade, Calendar date)

{ this.fam = fam;

this.name = name;

this.grade = grade;

this.date = date;

}

public Student(){};

public String getfam(){ return fam;}

public String getname(){ return name;}

public int getgrade(){ return grade;}

public Calendar getdate() { return date;}

public void output()

{ String str = String.format("%-10s%-10s%4d %td.%tm.%tY",

fam,name,grade,date,date,date);

System.out.println(str);

}

@Override

public int compareTo(Student obj)

{ return date.compareTo(obj.getdate());

}

}

class Primer {

public static void main(String[] args) {

Scanner in;

in = new Scanner(System.in);

Calendar dt1 = Calendar.getInstance();

dt1.set(1991, Calendar.JUNE, 1);

Calendar dt2 = Calendar.getInstance();

dt2.set(1990, Calendar.JANUARY, 15);

Calendar dt3 = Calendar.getInstance();

dt3.set(1991, Calendar.DECEMBER, 25);

Student[] st = new Student[3];

st[0] = new Student ("Сидоров","Петр",80,dt1);

st[1] = new Student ("Петров","Петр",56,dt2);

st[2] = new Student ("Иванов","Иван",70,dt3);

System.out.println("Список студентов: ");

MyClassComparator comparator = new MyClassComparator();

comparator.setCompareMethod(MyClassCompareMethods.BY_FAM);

Arrays.sort(st, comparator);

System.out.println("Compare by fam:");

System.out.printf("%-10s%-10s%-10s%-10s\n","Фамилия","Имя","Рейтинг","Дата рождения");

for (int i = 0; i<st.length; i++)

st[i].output();

comparator.setCompareMethod(MyClassCompareMethods.BY_GRADE);

Arrays.sort(st, comparator);

System.out.println("Compare by grade:");

System.out.printf("%-10s%-10s%-10s%-10s\n","Фамилия","Имя","Рейтинг","Дата рождения");

for (int i = 0; i<st.length; i++)

st[i].output();

comparator.setCompareMethod(MyClassCompareMethods.BY_DATE);

Arrays.sort(st, comparator);

System.out.println("Compare by date:");

System.out.printf("%-10s%-10s%-10s%-10s\n","Фамилия","Имя","Рейтинг","Дата рождения");

for (int i = 0; i<st.length; i++)

st[i].output();

int min = st[0].getgrade();

for(int i = 0; i<st.length; i++)

if (st[i].getgrade() < min)

min = st[i].getgrade();

in = new Scanner(System.in);

System.out.print("Укажите фамилию студента: ");

String fam = in.nextLine();

String f; int fl = 0;

for(int i = 0; i<st.length; i++)

{ f =st[i].getfam();

if (f.equals(fam))

{System.out.println("Рейтинг студента "+ fam+" - "+st[i].getgrade());

fl = 1;

}

}

if (fl == 0) System.out.println("Нет в списке студента "+fam);

System.out.println("Список студентов с минимальным рейтингом: ");

System.out.printf("%-10s%-10s%-10s%-10s\n","Фамилия","Имя","Рейтинг","Дата рождения");

for(int i = 0; i<st.length; i++)

if (st[i].getgrade() == min)

st[i].output();

}

}

enum MyClassCompareMethods {

BY_FAM,

BY_GRADE,

BY_DATE;

}

class MyClassComparator implements Comparator <Student>

{ private MyClassCompareMethods compareMethod;

public void setCompareMethod(MyClassCompareMethods method) {

compareMethod = method;

}

@Override

public int compare(Student o1, Student o2) {

switch (compareMethod) {

case BY_FAM:

int famDiff = o1.getfam().compareTo(o2.getfam());

if (famDiff != 0) return famDiff;

break;

case BY_GRADE:

int gradeDiff = Integer.compare(o1.getgrade(), o2.getgrade());

if (gradeDiff != 0) return gradeDiff;

break;

case BY_DATE:

}

//Если приоритетное сравнение вернуло 0 - сравниваем по умолчанию

return o1.compareTo(o2);

}

}

Рисунок 4 – Результат выполнения программы

Соседние файлы в папке Лаб.работы