gpt4 book ai didi

java - 解析检查不起作用

转载 作者:行者123 更新时间:2023-12-01 23:13:47 25 4
gpt4 key购买 nike

大家好,我正在使用这个方法来检查字符串是否可以转换为日期,但它似乎不起作用,这是我编写的代码,用户输入这种格式的日期 dd/MM/YYYY 那么这就是检查它时发生的事情

...
String date = JOptionPane.showInputDialog(frame,"Insert Date:");
if (date ==null) { return;}
while (!(isValidDate(date))) {
JOptionPane.showMessageDialog(frame, "Incorrect Date");
date = JOptionPane.showInputDialog(frame,"Insert Date:");
if (date ==null) { return;} }
String[] parts = date.split("/");
int year = Integer.parseInt(parts[2]);
int month = Integer.parseInt(parts[1]);
int day = Integer.parseInt(parts[0]);
...

这是检查日期的方法

public boolean isValidDate(String dateString) {
SimpleDateFormat df = new SimpleDateFormat("dd/MM/YYYY");
if (dateString.length() != "ddMMYYYY".length()) {
return false; }
try {
df.parse(dateString);
return true;
} catch (ParseException e) {
return false;
}

这似乎不起作用,因为无论我在输入中插入什么,它总是进入 while block ,这段代码有什么问题?

编辑

修复了条件错误

if (dateString.length() != "ddMMYYYY".length())

现在我遇到了另一个问题,它接受像 54/12/2030 这样的值,这显然不是日期格式

最佳答案

你的if条件似乎是错误的...应该是这样的。

 if (dateString.length() != "dd/MM/YYYY".length())    return false; 

如果输入日期是 22/07/1986 显然它的长度将超过 ddMMYYYY 的长度,因为缺少斜杠。

df.setLenient(false); 将确保它不会因无效日期而滚动。只需在创建 df 对象后放置此行即可。

关于java - 解析检查不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21530642/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com