2017-05-10 2 views
1

betrachten Sie den folgenden Code-Schnipsel:tun, während statments mit, wenn

  String msg = null; 
      do { 
       msg = login(); 
      } while (!msg.equals("OK")); 

ich eine Nachricht in der Konsole angezeigt werden soll, wenn msg von "OK" unterscheidet, zum Beispiel: ERROR, Try again...!. Ich tat dies:

 String msg; 
     do { 
      msg = login(); 
      if(!msg.equals("OK")){ 
       System.out.println("ERROR, Try again...!"); 
      } 
     } while (!msg.equals("OK")); 

Es funktioniert. Ich frage mich, ob es noch andere elegante Wege gibt, es zu tun.

+0

Sieht mir gut ... –

+0

Do ... whiles sind eine ziemlich normale Weg, dies zu erreichen. Wenn ich eine solche Validierung durchführen muss, extrahiere ich die Schleife in ihre eigene Funktion und lasse sie ein Prädikat akzeptieren, das die Eingabe verifiziert. In Ihrem Fall wäre das Prädikat '! Msg.equals (" OK ")'. Auf diese Weise müssen Sie, wenn Sie eine andere Validierung durchführen müssen, keine großen Schleifen überall im Gerät haben. – Carcigenicate

Antwort

6
String msg; 
while (!(msg = login()).equals("OK")) { 
    System.out.println("ERROR, Try again...!"); 
} 

oder sogar

while (!login().equals("OK")) { 
    System.out.println("ERROR, Try again...!"); 
} 
+0

danke. das ist wonach ich gesucht habe. – user7233170

1

Sie können bearbeiten Ihren Code mit dem folgenden:

while (!login().equals("OK")) { 
    System.out.println("ERROR, Try again...!"); 
} 
1

Eine Möglichkeit ist, die Schleife anstelle der Verwendung der Bedingungsklausel zu brechen. Auf diese Weise können Sie die doppelte Kontrolle vermeiden:

String msg; 
do { 
    msg = login(); 
    if (msg.equals("OK")) { 
     break; 
    } 
    System.out.println("ERROR, Try again...!"); 
} while (true); 
Verwandte Themen