You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java do-while循环读取时间抛出DateTimeParseException异常如何解决

问题根因

  • Scanner输入残留:sc.nextInt()只会读取输入的整数值,不会处理整数末尾的换行符。第二次进入do-while循环时,第一个sc.nextLine()会直接读取到上一轮残留的换行符,返回空字符串,导致LocalTime.parse()解析空串抛出异常。
  • 循环条件错误:while(choice=true)是赋值操作,会永久将choice置为true,循环永远无法正常退出,此处应为相等判断逻辑。

修复方案

  1. 调用sc.nextInt()后新增一行sc.nextLine(),消费残留的换行符:
System.out.println("Press '1' to enter another event");
int ch= sc.nextInt();
sc.nextLine(); // 新增该行,清除输入缓冲区的换行符
if(ch != 1) choice = false;
  1. 修正循环条件,将赋值改为判断:
// 原写法
while(choice=true);
// 修改后
while(choice);
  1. 可选优化:给时间解析逻辑加异常捕获,当用户输入格式不符合要求时提示重新输入,避免单次输入错误直接终止程序。

内容的提问来源于stack exchange,提问作者Ali Raza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 06:45:04