Java输入内容时无法实时打印对应时间的问题求助
解决Java输入时实时时间不更新的问题
你的代码中时间始终固定不变的核心原因是:Date dNow = new Date()被声明在循环外部,仅在程序执行到该行时初始化一次,后续循环中重复使用的都是这个固定的时间点,不会随输入操作自动更新。
修复方案(基于原有API)
将Date对象的创建逻辑移到循环内部,每次输入后重新获取当前时间:
Scanner reader = new Scanner(System.in); SimpleDateFormat dtformat = new SimpleDateFormat ("yyyy.MM.dd hh:mm:ss a"); for (int x = 0; x <= 5; x++){ String obj = reader.nextLine(); Date dNow = new Date(); // 每次输入后重新获取当前时间 System.out.println(obj + " " + dtformat.format(dNow)); // 添加空格分隔内容与时间 }
更优方案(Java 8+ 推荐)
SimpleDateFormat存在线程安全隐患,推荐使用Java 8引入的java.time包下的时间API,它不仅线程安全,还更符合现代Java编码规范:
Scanner reader = new Scanner(System.in); DateTimeFormatter dtformat = DateTimeFormatter.ofPattern("yyyy.MM.dd hh:mm:ss a"); for (int x = 0; x <= 5; x++){ String obj = reader.nextLine(); LocalDateTime now = LocalDateTime.now(); // 实时获取当前本地时间 System.out.println(obj + " " + now.format(dtformat)); }
内容的提问来源于stack exchange,提问作者dwextit
相关产品推荐
相关产品推荐

