如何解决Java中的日期验证失败
我是Java编程的新手,我正在尝试创建Java FX项目。我遵循了有关日期验证方法的教程,但它似乎失败了。在这一部分中,我必须列出用户在文本字段中插入的对象的列表。该日期包括日期,但必须有效。
在这段代码中,我需要验证的对象是 datep 。我创建了一个方法,在该方法中,如果字符串有效,则应将我的标志设置为true并返回它。在创建列表之前,我插入了一个 if 语句以检查我的 flag 是否设置为true,这意味着该日期已根据格式进行了验证。 ,即使日期无效,它也会创建列表。我是否将if语句放在错误的位置?因为我认为该方法很好。
@Override
public void handle(MouseEvent event) {
if (event.getSource() == NewrentBtn) {
String vehiclen =OximaTxT.getText();
String clientn = ClientTxT.getText();
String store = StoreTxT.getText();
String storer = StorerTxT.getText();
String timerp = TimeTxT.getText();
String timer = TimerTxT.getText();
String datep = DateTxT.getText(); // <-------------
String dater = DaterTxT.getText();
Integer sum = Integer.parseInt(SumTxT.getText());
if(flag = true) { // <------------
createRental(id,vehiclen,store,datep,timerp,clientn,storer,dater,timer,sum);
clearTextFields();
}
}
public boolean Checkdate(String datep) { // <-------------
DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
Date BOD = null;
df.setLenient(false);
try
{
BOD = df.parse(datep); // <----------------
flag = true;
}
catch(Exception e)
{
flag = false;
}
return flag;
}
public void createRental(int id,String vehiclen,String store,String datep,String timerp,String clientn,String storer,String dater,String timer,int sum ) {
Rental m = new Rental(id,sum);
RentalList.add(m);
rentalTableView.getItems().add(m);
}
解决方法
从您试图达到的目的来看,我的建议是修改代码。
首先让我向您解释我发现的两个问题:第一个问题是您缺少对Date的验证方法的调用,即您收到文本时对CheckDate(datep)
的调用输入并存储flag变量,或者似乎没有完整的代码(可以);其次,您在=
中缺少if(flag = true)
,应该是if(flag == true)
这是完整的代码:
@Override
public void handle(MouseEvent event) {
if (event.getSource() == NewrentBtn) {
String vehiclen =OximaTxT.getText();
String clientn = ClientTxT.getText();
String store = StoreTxT.getText();
String storer = StorerTxT.getText();
String timerp = TimeTxT.getText();
String timer = TimerTxT.getText();
String dater = DaterTxT.getText();
Integer sum = Integer.parseInt(SumTxT.getText());
String datep = DateTxT.getText();
boolean flag = Checkdate(datep);
if(flag == true) {
createRental(id,vehiclen,store,datep,timerp,clientn,storer,dater,timer,sum);
clearTextFields();
}
}
}
通过这种方式,您可以验证日期的格式是否正确,并根据您的计划继续进行操作。
最后,当您刚接触Java编程时,我有三点建议:
- 对于所有方法,首字母应始终为小写字母,例如
public boolean checkDate()
,这样您就可以区分方法和类,而类始终以public class Product
开头。唯一的例外是类的构造函数。 - 请勿将
graphical interface
逻辑与logical processing
逻辑混合使用。这是:您应该将处理部件放在一个程序包中,而将图形组件放在另一个程序包中,并通过在processing logic
中创建graphical interface
的实例来关联它们两者。 - 用户输入验证应使用以下类似的try-catch子句直接在处理程序方法中进行。
这里:
public void handle(MouseEvent event) {
if (event.getSource() == NewrentBtn) {
String vehiclen =OximaTxT.getText();
String clientn = ClientTxT.getText();
String store = StoreTxT.getText();
String storer = StorerTxT.getText();
String timerp = TimeTxT.getText();
String timer = TimerTxT.getText();
String dater = DaterTxT.getText();
Integer sum = Integer.parseInt(SumTxT.getText());
try {
String datep = DateTxT.getText();
SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy");
df.parse(date);
createRental(id,sum);
clearTextFields();
} catch (ParseException e) {
/* Here you handle what happens when if fails,you can create a JDialog to show
the error or create an alert,whatever you need */
e.printStackTrace();
}
}
}
瞧瞧更干净的版本
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。