作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以,我最近刚刚学会了如何创建一个循环,如果不满足某些条件,该循环可以重复特定的代码行。经过反复练习,我已经成功地能够在许多不同的程序中使用循环,但是当用户输入错误的日期格式时,我遇到了一个无法解决的问题。这是给我带来问题的代码:
循环:
while(true) {
Scanner scanner = new Scanner(System.in);
System.out.println("Enter the Date: ");
date1 = scanner.next();
SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd-yyyy");
Date date2=null;
try {
date2 = dateFormat.parse(date1);
} catch (ParseException e) {
e.printStackTrace();
}
System.out.println("The date you've entered is: " + date2);
break loop;
}
当我测试如果输入错误的日期会发生什么(例如我只是输入数字 3),它会继续执行下一行代码,同时告诉我无法解析输入的日期,因为格式错误。为什么不循环播放?这是它逐字给我的错误:
java.text.ParseException: Unparseable date: "3"
The date you've entered is: null
Customer 1 profile:
at java.text.DateFormat.parse(Unknown Source)
at Creations.Shop.main(Shop.java:82)
最佳答案
当您因 try block 中的代码失败而捕获 ParseException 时,将执行该 catch block 内的代码。因此,目前它只是使用 e.printStackTrace();
语句打印堆栈跟踪(错误消息)。相反,您需要像这样的 continue 语句,
catch (ParseException e) {
continue; // this skips the next code lines till the end of the loop
}
此外,您不需要每次都在循环中生成 Scanner 对象。您可以在 while 循环外初始化一次,然后在循环内使用它。
关于java - 如何为输入错误日期的用户正确创建循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53200137/
我是一名优秀的程序员,十分优秀!