2016-10-18 1 views
1

ich fange an, Java vor ein paar Wochen zu lernen, und ich habe eine Aufgabe, eine Schaltfläche zu erstellen, wenn Sie darauf klicken, werden Sie Jahr 1, Motte 1, Tag 1, Jahr 2, Motte eingeben 2 2, Tag und vergleicht sie zwischen diesen beiden Daten, Ihnen zu sagen, welche größer ist schreibe ich diesen Code und seine perfekt zu mir .. Ps ich bin netbeans2 Verarbeitungscode, eine Nachricht erscheint

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"); 

jetzt mit ich muss das machen Code schlauer, so schrieb ich einen anderen Code, wenn jemand 13 für den Monat 1 zum Beispiel schreiben .. eine Nachricht erscheint, sagt sein ungültiges Datum und hier ist der Code

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"); 

mein Problem ist, wenn der Benutzer ein zwei Daten wie 20-13-2005/20-10-2005 meine zwei Codes zusammen antwortet .. es sagt ihm "Datum 1> Datum 2" und ein "ungültiges Datum" zur gleichen Zeit meine Frage ist, wie der zweite Code mit dem ersten zusammen, so wenn der Benutzer ein ungültiges Datum schreiben, der Datumsvergleich Code funktioniert nicht mehr und nur Nachricht mit ungültigem Datum erscheint?

Entschuldigung, ich habe dich so lange gebraucht, um das zu lesen, aber ich muss es wirklich wissen.

Antwort

0

Warum fügen Sie nicht einfach einen booleschen Wert hinzu, der angibt, ob das Datum ungültig ist. Dann umgeben Sie den Codeblock, der gültige Datumsangaben in einem if() - Block vergleicht, der nur ausgeführt wird, wenn der Wahrheitswert wahr ist. z.B.

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

wow, es funktioniert ... ti wirklich ein Wort, das Sie danken finden vielen Dank dude! : D –

0

Diese Frage braucht viel Bearbeitung, um freundlicher zu sein, aber Ihre Antwort ist ziemlich einfach: die else if Klausel.

Lassen Sie mich erklären:

Wenn Sie einen Wert von dem Benutzer erhalten, Sie wollen eigentlich nur eine Sache tun - zeigt eine Meldung in Bezug auf den Vergleich der beiden Termine in der Hand.

Aber in einige Fällen der Wert, den Sie vom Benutzer bekam ist ungültig. Also, ich würde erwarten, dass Ihr Code wie etwas aussehen:

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

Auf diese Weise Ihre Bedingungen nicht kollidieren ... Hoffnung, ich war klar genug. Viel Glück!

Verwandte Themen