2处理代码,出现一条消息

时间:2016-10-18 17:03:40

标签: java

我几周前开始学习Java,当你点击它时我有一个创建按钮的任务,你将被要求输入第1年,第1天,第1天,第2年,第2天,第2天,它比较这两个日期,告诉你哪一个更大 我写这个代码,它的完美给我.. P.s我正在使用netbeans

String s=JOptionPane.showInputDialog(null,"Year 1");
String s2=JOptionPane.showInputDialog(null,"Month 1");
String s3=JOptionPane.showInputDialog(null,"Day 1");
String s4=JOptionPane.showInputDialog(null,"Year 2");
String s5=JOptionPane.showInputDialog(null,"Month 2");
String s6=JOptionPane.showInputDialog(null,"Day 2");
double y1=Double.parseDouble(s);
double m1=Double.parseDouble(s2);
double d1=Double.parseDouble(s3);
double y2=Double.parseDouble(s4);
double m2=Double.parseDouble(s5);
double d2=Double.parseDouble(s6);
if(y1>y2)
    JOptionPane.showMessageDialog(null,"Date1 > Date2");
else if(y1<y2) 
    JOptionPane.showMessageDialog(null,"Date1 < Date2");
else if(y1==y2&&m1>m2)
    JOptionPane.showMessageDialog(null,"Date1 > Date2");
else if(y1==y2&&m1<m2)
    JOptionPane.showMessageDialog(null,"Date1 < Date2");
else if(y1==y2&&m1==m2&&d1>d2)
    JOptionPane.showMessageDialog(null,"Date1 > Date2");
else if(y1==y2&&m1==m2&&d1<d2)
    JOptionPane.showMessageDialog(null,"Date1 < Date2");
else if(y1==y2&&m1==m2&&d1==d2)
    JOptionPane.showMessageDialog(null,"Date1 equal Date2");

现在我需要让这段代码变得更聪明,所以我写了另一段代码,如果有人为第1个月写了13个例子......会出现一条消息,说明它的无效日期和这里的代码

if (d1<1||d1>31||m1<1||m1>12)
    JOptionPane.showMessageDialog(null,"Invalid Date 1");
else if(m1==2&&d1>29)
    JOptionPane.showMessageDialog(null,"Invalid Date 1");
else if((m1==4||m1==6||m1==9||m1==11)&&d1>30)
    JOptionPane.showMessageDialog(null,"Invalid Date 1");
else if (d2<1||d2>31||m2<1||m2>12)
    JOptionPane.showMessageDialog(null,"Invalid Date 2");
else if(m2==2&&d2>29)
    JOptionPane.showMessageDialog(null,"Invalid Date 2");
else if((m2==4||m2==6||m2==9||m2==11)&&d2>30)
    JOptionPane.showMessageDialog(null,"Invalid Date 2");

我的问题是当用户写两个日期时 20-13-2005 / 20-10-2005 我的两个代码一起响应..它同时告诉他“日期1&gt;日期2”和“无效日期” 我的问题是如何将第二个代码合并到第一个,所以当用户写一个无效的日期,日期比较代码停止工作,只有无效日期的消息出现?

抱歉,我花了这么长时间才读到这篇文章,但我真的需要知道。

2 个答案:

答案 0 :(得分:0)

这个问题需要很多编辑才能更友好,但你的答案非常简单:else if条款。

让我解释一下:

当您从用户那里获得一个值时,您希望实际只执行一项操作 - 显示有关手头两个日期比较的消息。

但是,在某些情况下,您从用户获得的值无效。所以,我希望你的代码看起来像:

MyDateWrapper date = getDateEnteredByUser();
If(isDateValid(date)) {
// do something...
}
else {
//output error message...
}

这样,你的条件不会碰撞...... 希望我足够清楚。祝你好运!

答案 1 :(得分:0)

为什么不添加一个标记日期是否无效的布尔值。然后围绕代码块,该代码块比较if()块中的有效日期,该块仅在布尔值为true时才运行。如,

boolean isValid = true;
//code checking for date validity goes here, set isValid to false when validity check fails
if (d1<1||d1>31||m1<1||m1>12) {
    JOptionPane.showMessageDialog(null,"Invalid Date 1");
    isValid = false;
}
...

if (isValid) {
    if(y1>y2)
        JOptionPane.showMessageDialog(null,"Date1 > Date2");
    ...
}