Задание 2
Изменить программу, созданную Java на основе задания 2 лабораторной работы № 4. В метод ввода значений полей класса индивидуального варианта добавить проверку допустимости вводимых значений. В случае недопустимых значений полей выбрасывать исключения, которые необходимо обработать в методе main() главного класса программы.
Пример 2
В листинге 2 представлена программа, в которой формируется исходный список студентов, список студентов с минимальным рейтингом, а также осуществляется поиск информации о рейтинге студента по его фамилии. Исходный список студента сортируется по фамилии в алфавитном порядке. В методе input выполняется проверка вводимых значений для поля рейтинг (grade). Рейтинг студента должен быть целым числом в диапазоне от 0 до 100.
Для создания программы использовалась среда разработки NetBeans IDE 8.0. На рисунке 3 показан состав проекта программы.
Рисунок 3 – Состав проекта программы
Создание проекта в NetBeans: Файл -> Создать проект -> Java -> Приложение Java.
Компиляция, сборка и выполнение проекта: Выполнить -> Запустить проект.
На рисунке 4 показан результат выполнения программы.
Листинг 2
// Student.java
package primer2;
import java.util.*;
import java.io.*;
class Student implements Comparable
{ private String fam;
private String name;
private int grade; //рейтинг
public Student(String fam, String name, int grade)
{ this.fam = fam;
this.name = name;
this.grade = grade;
}
public Student(){};
public String getfam(){ return fam;}
public String getname(){ return name;}
public int getgrade(){ return grade;}
public void input()throws Exception
{ Scanner in = new Scanner(System.in);
System.out.print("Фамилия: "); fam = in.nextLine();
System.out.print("Имя: "); name = in.nextLine();
System.out.print("Рейтинг: "); grade = in.nextInt();
if (grade < 0 || grade > 100)
throw new Exception("Ошибка: Рейтинг должен быть от 0 до 100!");
}
public void output()
{ System.out.printf("%-10s%-10s %d\n",fam,name,grade);
}
@Override
public int compareTo(Object obj)
{ Student tmp = (Student)obj;
return fam.compareTo(tmp.getfam());
}
}
// Primer2.java
package primer2;
import java.util.*;
import java.io.*;
class Primer2 {
public static void main(String[] args) {
Scanner in; int n; Student[] st = null;
try
{ System.out.print("Введите кол-во студентов: ");
in = new Scanner(System.in);
n = in.nextInt();
st = new Student[n];
for (int i = 0; i<st.length; i++)
{ st[i] = new Student();
st[i].input();
}
Arrays.sort(st);
System.out.println("Список студентов: ");
System.out.printf("%-10s%-10s%-10s\n","Фамилия","Имя","Рейтинг");
for (Student st1 : st) {
st1.output();
}
int min = st[0].getgrade();
for (Student st1 : st) {
if (st1.getgrade() < min) {
min = st1.getgrade();
}
}
in = new Scanner(System.in);
System.out.print("Укажите фамилию студента: ");
String fam = in.nextLine();
String f; int fl = 0;
for (Student st1 : st) {
f = st1.getfam();
if (f.equals(fam)) {
System.out.println("Рейтинг студента "+ fam+" - " + st1.getgrade());
fl = 1;
}
}
if (fl == 0) System.out.println("Нет в списке студента "+fam);
System.out.println("Список студентов с минимальным рейтингом: ");
System.out.printf("%-10s%-10s%-10s\n","Фамилия","Имя","Рейтинг");
for (Student st1 : st) {
if (st1.getgrade() == min) {
st1.output();
}
}
}
catch (InputMismatchException e)
{ System.out.println("Это НЕ число!!!" + e);
}
catch (Exception e)
{ System.out.println(e);}
}
}
Рисунок 4 – Результат выполнения программы