Witam,
Proszę mi powiedzieć, gdzie jest błąd, że ciągle w konsoli muszę dwa razy wpisywać np. imię bądź datę urodzenia i jakbyście ulepszyli to.
Z góry bardzo dziękuję :)
package kurs.kursik;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;
public class InterfejsPsa {
static Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
Pies p1 = new Pies();
Pattern pattern = Pattern.compile("[a-zA-Z]*");
String nameInput;
do {
System.out.println("Podaj imię: ");
nameInput = getUserInput();
Matcher matcher = pattern.matcher(nameInput);
if (matcher.matches())
{
p1.setImie(getUserInput());
}
else
{
System.out.println("Musisz podać nazwę składającą się z małych lub dużych liter.");
}
} while (p1.getImie() == null);
Pattern pattern2 = Pattern.compile("([0-9]{2}.)([0-9]{2}.)([0-9]{4})");
SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");
do {
System.out.println("Podaj datę urodzenia:");
Matcher matcher2 = pattern2.matcher(getUserInput());
if(matcher2.matches())
{
try
{
p1.setData(sdf.parse(getUserInput()));
}
catch(ParseException nfe)
{
System.out.println("Błąd daty, prawidłowy format to Dzien.Miesiac.Rok");
}
}
else
{
System.out.println("błąd2");
}
} while (p1.getData() == null);
Pattern pattern3 = Pattern.compile("[0-9]+(\\.[0-9]+)?");
String weightInput;
do {
System.out.println("Podaj wagę:");
weightInput = getUserInput();
if(pattern3.matcher(weightInput).matches())
{
try {
p1.setWaga(Float.valueOf(getUserInput()));
} catch(NumberFormatException ne) {
System.out.println("Waga musi być wartością np. 20.0");
}
}
else
{
System.out.println("błąd3");
}
} while (p1.getWaga() == null);
System.out.println("Podaj imię opiekuna: ");
p1.setImieOpiekuna(getUserInput());
System.out.println("Imię " + p1.getImie() + ", data urodzenia: " +p1.getData()+ ", waga " + p1.getWaga() + ", imię opiekuna " + p1.getImieOpiekuna());
}
public static String getUserInput() {
return sc.nextLine();
}
}