Tom Młynarski:
Tengo un método por debajo del cual pregunta al usuario para proporcionar la fecha de que el teclado, yo necesitar extender mi código para validar si el usuario introduce de hecho los datos en formato M / d / yyyy. Si no es así, volver a preguntar a repetir y datos de entrada correcta, ¿cómo puedo aplicar eso?
private static void extracted2(Doctor l1, Patient p1, List<Schedule> lista) {
Scanner sc2 = new Scanner(System.in);
System.out.println("provide data with format M/d/yyyy");
while (true) {
try {
String userinput = sc2.next();
DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("M/d/yyyy");
LocalDate date = LocalDate.parse(userinput, dateFormat);
Schedule g5 = new Schedule(5, l1, p1, date, false, false);
lista.add(g5);
for (Schedule x : lista) {
System.out.println(x);
}
} catch (DataFormatException e) {
System.out.println("Wrong data " + e.getMessage());
}
}
}
dkb:
Creo que está cerca, pero aquí está la solución final:
Eliminado otra lógica a partir del código, ya que puede ser añadido.
Scanner sc2 = new Scanner(System.in);
LocalDate date = null;
boolean isValid;
do {
try {
System.out.println("Provide date format M/d/yyyy");
DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("M/d/yyyy");
String userinput = sc2.next();
date = LocalDate.parse(userinput, dateFormat);
isValid = true;
} catch (DateTimeParseException exception) {
isValid = false;
}
} while(!isValid);
System.out.println(date);
salida:
Provide date format M/d/yyyy 333 Provide date format M/d/yyyy 444 Provide date format M/d/yyyy 1/2/2020 2020-01-02