2016-10-18 10 views
1

私は数週間前にJavaを学習し始めました。あなたがそれをクリックするとボタンを作成する課題があります。あなたは1年目、1日目、1日目、2年目、 2、2日目、そしてそれは、この2つの日付の間の比較は今、私はこれを行う必要があり、私は、NetBeans 2処理コード、1つのメッセージが表示されます

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が 大きいいるPSはあなたを伝えるためにもっとスマートなコードなので、別のコードを書いています。誰かが例えば1月13日に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"); 

私の問題は、ユーザーが2つの日付を書くときです 20-13-2005/20-10-2005 私の2つのコードが一緒に応答します。 "date 1> date 2"と "invalid date"同時に 私の質問は、最初の2番目のコードをマージする方法ですので、ユーザーが無効な日付を記述すると、日付比較コードが機能しなくなり、無効な日付のメッセージのみが表示されますか?

申し訳ありません申し訳ありませんが、私はあなたにこの記事を読むまでには長い時間がかかりましたが、本当に知る必要があります。

答えて

0

なぜ、日付が無効な場合にフラグを立てるブール値を追加しないでください。次に、booleanがtrueの場合にのみ実行されるif()ブロック内の有効な日付を比較するコードブロックを囲みます。例:

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"); 
    ... 
} 
+0

うわー、それは...ティは本当にあなたに感謝の言葉を見つけることができます おかげでたくさんの男! :D –

0

この質問にはより多くの友好的な編集が必要ですが、回答は非常に簡単です:else if句。

私に説明してみましょう:あなたはユーザーから値を取得する場合、あなたは に実際にだけ一つのことを行いたい

- 手2つの日付の比較に関するメッセージが表示されます。

しかし、の場合、ユーザーから受け取った値はであり、無効なものはです。私は十分に明確だった...

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

この方法で、あなたの条件が衝突しない 希望を:だから、私はあなたのコードのようなものを見て期待します。がんばろう!

関連する問題