Я пытаюсь узнать у пользователя дату и время. В моей программе у меня есть методы, чтобы спросить пользователя об этих значениях и методы для проверки входных данных. Однако в моей программе пользователь никогда не может ввести значение даты, поскольку программа продолжает проходить после этой точки и принимает нулевое значение для даты. Почему это? В результате методы проверки вызывают ошибку:
java.lang.NullPointerException
«Основной»
public void bookAppointment(BankClient bc) {
String date = askForDate();
String time = askForTime();
sendAppointmentNotification(createAppointmentNotification(date,time));
}
Метод запроса даты
private String askForDate() {
GetInputFromUserInter input = new GetInputFromUser();
while(true) {
String date = input.getUserInput("Date For Appointment in the form of DD/MM/YYYY");
date.trim();
if (validateDate(date)) {
return date;
}
else {
System.out.println(date+" is Invalid Date format");
}
}
}
Метод проверки даты
private static boolean validateDate(String date) {
System.out.println("here");
SimpleDateFormat sdfrmt = new SimpleDateFormat("DD/MM/YYYY");
sdfrmt.setLenient(false);
try{
Date javaDate = sdfrmt.parse(date);
}
/* Date format is invalid */
catch (ParseException e){
return false;
}
/* Return true if date format is valid */
return true;
}
Получить метод ввода
static BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
public String getUserInput(String label) {
String value = null;
System.out.println( "\nProvide " + label + ":" );
System.out.println( ">" );
while(value !=null) {
try {
value = input.readLine();
}
catch (IOException ex) { ex.printStackTrace(); }
}
return value;
};