2016-03-22 11 views
0

Ich mache ein Programm für die Schule, die Kontakte in eine Array-Listen mit JOptionPane/Dialogfelder für Eingabe/Ausgabe fügt.Stop-Code an einem bestimmten Punkt in einer Methode

Das Problem, das ich habe, ist mit den Tasten Abbrechen und "X": wenn sie vom Benutzer gedrückt werden, stürzen sie das Programm ab.
Ich habe herausgefunden, mit "Return" Ich konnte die Methode stoppen, und das für das erste Dialogfeld funktioniert, aber wenn Informationen eingegeben und der Benutzer mit dem nächsten Dialogfeld geht es stürzt ab, obwohl ich wieder verwenden.

Also im Grunde, was ich tun möchte, ist, wenn der Benutzer Abbrechen oder "X" drückt, um die aktuelle Methode zu entkommen, wird es ohne Absturz und Rückkehr zur Hauptmethode, um andere Prozesse auszuführen.

Dieser Code funktioniert für den ersten Eintrag und beendet das Programm erfolgreich:

while(nameError) 
{ 
surname = JOptionPane.showInputDialog(null, "Enter a Surname"); 
if(surname == null) 
{ 
    return; 
} 
else 
{ 
    if(!(surname.matches(NamesTest))) 
    { 
     JOptionPane.showMessageDialog(null,errorMsg); 
    } 
    else nameError = false; 
    temp[0] = surname; 
} 
} 

aber die nächste Codezeile in dem Verfahren für die zweite Dialogfeld tut:

while(nameError1) 
{ 
if(forename == null) 
{ 
    return; 
} 
else 
{ 
    forename = JOptionPane.showInputDialog(null, "Enter a Forename"); 
    if(!(forename.matches(NamesTest))) 
    { 
     JOptionPane.showMessageDialog(null,errorMsg); 
    } 
    else nameError1 = false; 
    temp[1] = forename; 
} 
} 

Antwort

0

Soetwas sollte es tun:

import javax.swing.JOptionPane; 

public class DialogExample { 

    public static void main(String[] args) { 
     new DialogExample().getNames(); 
    } 

    private void getNames() { 
     String firstName = null; 
     String lastName = null; 
     while (firstName == null || firstName.length() == 0) { 
      firstName = getFirstName(); 
     } 
     while (lastName == null || lastName.length() == 0) { 
      lastName = getLastName(); 
     } 
     JOptionPane.showMessageDialog(null, "Hello " + firstName + " " + lastName); 
    } 

    private String getFirstName() { 
     String rtn = JOptionPane.showInputDialog(null, "Enter First Name"); 
     if(rtn == null || rtn.length() == 0) { 
      JOptionPane.showMessageDialog(null, "Name cannot be empty"); 
     } 
     return rtn; 
    } 

    private String getLastName() { 
     String rtn = JOptionPane.showInputDialog(null, "Enter Last Name"); 
     if(rtn == null || rtn.length() == 0) { 
      JOptionPane.showMessageDialog(null, "Name cannot be empty"); 
     } 
     return rtn; 
    } 

} 
+0

Könnten Sie vielleicht erklären, warum? –