Schalter / Anfrage mit Boolean

9

Ich versuche eine Methode zu erstellen, die überprüft, ob das Login (Benutzername und Passwort) mindestens sechs Zeichen hat.

Um zu erkennen, dass ich diese Methode public void checkLoginData(final String username, final String password) erstellt habe. In dieser Methode erstelle ich boolesche Werte (user und pass), mit denen ich 4 verschiedene boolesche Ketten erzeugen kann:

  • Benutzer: true pass: true
  • Benutzer: false pass: true
  • Benutzer: false pass: false
  • Benutzer: true pass: false

Nun würde ich gerne eine switch / case-Anfrage für jede von ihnen machen, aber ich verstehe nicht, wie ich das realisieren soll ...

Wenn du fragst, warum ich den Schalter brauche, denke ich, dass ich ihn brauche, weil ich für jede dieser vier Booleschen Ketten gerne etwas anderes machen würde. Außerdem würde ich das gerne auf eine sexy-Java-Art tun, nicht mit tausenden verschiedenen 'ifs': P, bitte helfen!

Hier ist der Code der Methode:

%Vor%

Danke für die Hilfe im Voraus!

Beste Grüße Safari

    
safari 13.01.2012, 12:21
quelle

5 Antworten

9

Sie können boolean[] nicht nur auf ganzzahlige Typen umschalten. Um die Booleans in ein int zu konvertieren, könnten Sie eine Bitmaske für die 2 booleans verwenden, wie zum Beispiel:

%Vor%     
king_nak 13.01.2012, 12:52
quelle
11

Wenn Sie wirklich einen "sexy-Java-Weg" wollen (aber das hängt davon ab, was Sie als solches verstehen), können Sie etwas wie (Java 7 erforderlich) tun:

%Vor%

aber ich würde es vorziehen, nur zwei verschiedene Prüfungen zu machen, jede mit seiner eigenen Nachricht, wobei die Nachricht zur Präsentation hinzugefügt wird. (und nicht sicher, ob das als "sexy-java-way", eher als "Workaround" bezeichnet werden könnte)

    
Carlos Heuberger 13.01.2012 13:29
quelle
9

Schätze, so würde ich es mit enums lösen:

%Vor%     
crusam 13.01.2012 13:14
quelle
8

Grundsätzlich gibt es keinen einfacheren Weg als diesen und keine Möglichkeit, dies in wesentlich weniger Codezeilen zu tun.

%Vor%

Meiner Meinung nach ist dies die beste Lösung.

  

Ich würde das auch auf eine sexy-java-Art machen, nicht mit tausenden verschiedenen 'ifs'

Wenn Sie unter "sexy-java-way" "clever" oder "obskur" verstehen, gibt es andere Möglichkeiten, dies zu tun. Aber sie machen den Code sicherlich nicht lesbarer / wartbarer.

Übrigens, das obige beinhaltet nur 3 ... das ist richtig DREI ... if statements.

Allerdings Ihr (letztes) spezifisches Beispiel:

%Vor%

kann wie folgt vereinfacht werden:

%Vor%

Beachten Sie, dass hier eine Vereinfachung möglich ist, da die Aktionen (die "Fälle" in Ihrem hypothetischen Schalter) in einfache boolesche Zuweisungen umgestaltet werden können und die Tests tatsächlich unabhängig voneinander sind. Im Allgemeinen können Sie das nicht tun ...

  

... aber ich möchte es lieber celver haben, um meinen Chef zu beeindrucken;)

Im Ernst, wenn ich dein Boss wäre und du einen solchen Code geschrieben hättest, wäre ich UN beeindruckt. Jeder Chef, der denkt, dass Sie schlau sind, obskuren und nicht zu erhaltenden Code zu schreiben, ist ahnungslos.

    
Stephen C 13.01.2012 13:04
quelle
3
%Vor%

Oder

%Vor%     
Vaandu 13.01.2012 12:27
quelle