Em đang học java đang gặp khó chỗ tạo Exception mong mọi người giúp. Đề bài là tạo 1 project quản lý sinh viên và tạo 1 Exception bắt lỗi khi nhập vào 1 id đã tồn tại và trả về thông tin của sinh viên có id trùng. Dưới đây là phần code của em. Mong các cao nhân tạo mẫu giúp em Exception để tham khảo ạ
Class Student
public class Student{
private int id;
private LocalDate dob;
private String name;
public Student() {
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public LocalDate getDob() {
return dob;
}
public void setDob(LocalDate dob) {
this.dob = dob;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public int hashCode() {
int hash = 5;
return hash;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final Student other = (Student) obj;
if (this.id != other.id) {
return false;
}
return true;
}
@Override
public String toString() {
return "Student{" + "id=" + id + ", dob=" + dob + ", name=" + name + "}\n";
}
public void Input(){
while (true) {
try {
id = Validator.getInteger("Enter id: ", 0, Integer.MAX_VALUE);
break;
} catch (Exception e) {
System.out.println(e.getMessage());
System.out.println("Retype");
}
}
try {
name = Validator.getString("Enter name: ", 2, 100);
} catch (Exception ex) {
System.out.println(ex.getMessage());
System.out.println("-> name gets default value");
name = "Student_" + id;
}
try {
dob = Validator.getLocalDate("Enter dob: ", LocalDate.now().minusYears(80), LocalDate.now().minusYears(17), "dd/MM/yyyy");
} catch (Exception ex) {
System.out.println(ex.getMessage());
System.out.println("-> empty info");
}
}
}
class Array Student
public class StudentAr {
ArrayList<Student> st;
Scanner sc = new Scanner(System.in);
public StudentAr() {
st = new ArrayList<>();
}
public void Input(){
int count = 1;
while(count == 1){
Student s = new Student();
s.Input();
st.add(s);
System.out.println("Information student have been added");
try {
count = Validator.getInteger("Add new student. 0_stop, 1_continue", 0, 1);
} catch (Exception ex) {
count = 0;
}
}
}
@Override
public String toString() {
return "StudentList{" + st + '}';
}
public void SortByID(){
Collections.sort(st, new SortByID());
for (int i = 0; i < st.size(); i++) {
System.out.println(st);
break;
}
}
public void SortByName(){
Collections.sort(st, new SortByName());
for (int i = 0; i < st.size(); i++) {
System.out.println(st);
break;
}
}
public void SortByDob(){
Collections.sort(st, new SortByDob());
for (int i = 0; i < st.size(); i++) {
System.out.println(st);
break;
}
}
}
Class Validator dùng để kiểm tra thông tin nhập vào
public class Validator {
public static Scanner sc = new Scanner(System.in);
public static int getInteger(String mess, int min, int max) throws Exception{
System.out.println(mess);
int i = 0;
try {
i = sc.nextInt();
sc.nextLine();
} catch (InputMismatchException e) {
sc.nextLine();
throw e;
}
if (i< min || i > max) {
throw new Exception("data is out of the requested range");
}
return i;
}
public static String getString(String mess, int minLength, int maxLength) throws Exception{
System.out.println(mess);
String s = sc.nextLine();
if (s.length() < minLength || s.length() > maxLength) {
throw new Exception("string length does not match");
}
return s;
}
public static LocalDate getLocalDate(String mess, LocalDate min, LocalDate max, String pattern) throws Exception{
System.out.println(mess);
String s = sc.nextLine();
LocalDate dob = LocalDate.parse(s, DateTimeFormatter.ofPattern(pattern));
if (dob.compareTo(min) < 0 || dob.compareTo(max) > 0) {
throw new Exception("import date not working in requested range");
}
return dob;
}
}
class SortByID dùng để sắp xếp mảng theo ID
public class SortByID implements Comparator<Student>{
@Override
public int compare(Student t1, Student t2) {
if (t1.getId() > t2.getId()) {
return 1;
} else if (t1.getId() < t2.getId()){
return -1;
} else {
return 0;
}
}
}
Class SortByName dùng để sắp xếp theo tên
public class SortByName implements Comparator<Student>{
@Override
public int compare(Student t1, Student t2){
if (t1.getName().compareTo(t2.getName()) > 0) {
return 1;
} else if (t1.getName().compareTo(t2.getName()) < 0) {
return -1;
} else {
return 0;
}
}
}
Class SortByDob sắp xếp theo ngày sinh
public class SortByDob implements Comparator<Student>{
@Override
public int compare(Student t1, Student t2) {
return (t2.getDob().compareTo(t1.getDob()));
}
}