好吧,在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类(如何完成?),或者如果我必须自己编写解析和验证代码。我接近这个完全错了吗?我目前正在尝试各种可能性,所以如果有更好的方法请告诉我。
谢谢!
答案 0 :(得分:7)
我使用DateFormat
的{{3}}方法确定了这一点。
fmt.setLenient(false);
现在输入任何不符合格式的内容(小时= 0到23和分钟= 0到59),它会引发异常:)