Mam takie zadanie ale nie wiem jak sie za nie zabrać:
Utwórz klasę Osoba wraz z polami:
• String imie;
• String nazwisko;
• int rok urodzenia;
• boolean plec;
• short kodPocztowy.
Klasę wzbogać o konstruktor, który zainicjuje pola wartościami wprowadzonymi z
konsoli przy wykorzystaniu strumienia System.in. Jeżeli wprowadzane przez użytkownika dane nie będą odpowiadały rodzajowi pola, należy podnieść wyjątek NiewlasciweDaneException.
Realizację zadania przetestuj tworząc przynajmniej 3 obiekty klasy Osoba.
Zrobiłem coś takiego ale wydaje mi się zbyt toporne i nie działa tak jakbym chciał:
public class Osoba {
String imie, nazwisko;
int rokUrodzenia;
boolean plec;
short kodPocztowy;
Osoba() throws NiewlasciweDaneException {
System.out.println("Wprowadz imie");
Scanner odczyt1 = new Scanner(System.in);
this.imie = odczyt1.nextLine();
System.out.println("Wprowadz nazwisko");
Scanner odczyt2 = new Scanner(System.in);
this.nazwisko = odczyt2.nextLine();
System.out.println("Wprowadz rok urodzenia");
Scanner odczyt3 = new Scanner(System.in);
String o3 = odczyt3.nextLine();
Pattern pattern = Pattern.compile("[0-9]*");
Matcher matcher = pattern.matcher(o3);
int a = Integer.parseInt(o3);
if (matcher.matches() && (a >= -2147483648 && a <= 2147483647)) {
this.rokUrodzenia = a;
} else {
throw new NiewlasciweDaneException();
}
System.out.println("Czy jestes mezczyzna?");
Scanner odczyt4 = new Scanner(System.in);
String o4 = odczyt4.nextLine();
if (o4 == "true") {
this.plec = true;
} else if (o4 == "false") {
this.plec = false;
} else {
throw new NiewlasciweDaneException();
}
System.out.println("Wprowadz kod pocztowy");
Scanner odczyt5 = new Scanner(System.in);
String o5 = odczyt5.nextLine();
Pattern pattern2 = Pattern.compile("[0-9]*");
Matcher matcher2 = pattern2.matcher(o3);
Short b = Short.parseShort(o3);
if (matcher2.matches() && (b >= -32768 && b <= 32767)) {
this.kodPocztowy = b;
} else {
throw new NiewlasciweDaneException();
}
}
}
Jak to zrobic lepiej?