Хорошо, поэтому в Java я хочу попросить пользователя указать время в 24-часовом формате. Мне удалось использовать DateFormat
и SimpleDateFormat
, чтобы сообщить ему, в каком формате вводится время, и затем соответствующим образом интерпретировать его, создав исключение, если оно не соответствует этому формату. Вот что у меня есть:
DateFormat fmt = new SimpleDateFormat("HH:mm");
Scanner keyboard = new Scanner(System.in);
try {
String input = keyboard.nextLine();
Date theDate = fmt.parse(input);
System.out.println(theDate.toString());
} catch (ParseException e) {
System.out.println("Incorrect format!");
e.printStackTrace();
}
Если я наберу слово, оно действительно выдает исключение. Однако, если я наберу что-то вроде 234234:2342342
, оно на самом деле идет и выполняет математические вычисления, чтобы выяснить, сколько дней равняются этим часам и минутам, а затем выводит фактическую дату. Например, с учетом ввода:
input: 23423423:232323
output: Fri Jul 29 07:03:00 PDT 4642
Мне интересно, есть ли способ трактовать это как исключение. Поэтому я хочу принять только то, что указано в средствах форматирования (H 0-23 и m 0-59), и, если оно не попадает в эти границы, сгенерировать исключение или иметь какой-либо способ узнать. Я хотел бы знать, есть ли способ сделать это с помощью классов форматирования, которые я использую, или это должно быть сделано с использованием класса Scanner (как?), Или если мне нужно написать код синтаксического анализа и проверки самостоятельно , Я подхожу к этому совершенно неправильно? В настоящее время я просто пробую возможности, поэтому, если есть лучший способ, пожалуйста, дайте мне знать.
Спасибо!