Хорошо, поэтому на 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 (как?) Или мне самому написать код синтаксического анализа и проверки , Я подхожу к этому совершенно неправильно? В настоящее время я просто пытаюсь использовать возможности, поэтому, если есть лучший способ, дайте мне знать.
Спасибо!
Я думаю, что вы собираетесь получить Атман -Личный значок :) – Dolph