这个问题在这里已经有答案了:
如果语句给出的条件始终为真(4个答案)
5个月前关门了。
我对java编程完全陌生,我正在尝试创建一个JavaFX项目。我遵循了有关日期验证方法的教程,但似乎失败了。在这一部分中,我必须列出用户在文本字段中插入的对象。包括日期,但必须有效。
在下面这段代码中,我需要验证的对象是datep。我创建了一个方法,在这个方法中,如果字符串有效,它应该将我的标志设置为true并返回它。在创建列表之前,我插入了一个if语句来检查我的标志是否设置为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,vehiclen,store,datep,timerp,clientn,storer,dater,timer,sum);
RentalList.add(m);
rentalTableView.getItems().add(m);
}
1条答案
按热度按时间axzmvihb1#
从您试图实现的目标来看,我建议您修改代码。
首先让我向您解释我发现的两个问题:第一个问题是您缺少对日期的验证方法的调用,即对
CheckDate(datep)
当您接收到文本输入并存储flag变量时,或者看起来我们没有完整的代码(这是可以的);第二,你错过了一个=
在if(flag = true)
,应该是if(flag == true)
下面是完整的代码:通过这种方式,您可以验证日期的格式是否正确,如果符合您的方案,则继续此过程。
最后,由于您是java编程新手,我有三条建议:
对于所有的方法,第一个字母都应该是小写的
public boolean checkDate()
这样您就可以区分方法和类,它们总是以大写字母开头public class Product
. 唯一的例外是类的构造函数。你不应该把这些东西混在一起
graphical interface
逻辑,和logical processing
逻辑。这是:您应该将处理部分放在一个包中,将图形组件放在另一个包中,并通过创建processing logic
在graphical interface
.用户输入验证应该直接在handler方法中使用try-catch子句进行,如下所示。
在这里:
瞧,一个更干净的版本