[Einführung in Java] Bedingte Verzweigung (if-Anweisung, if-else-Anweisung, else if-Anweisung, ternärer Operator, switch-Anweisung)

Zweck

Für diejenigen, die gerade mit dem Programmieren einschließlich der Java-Sprache begonnen haben, und für diejenigen, die es bereits gelernt haben, zur Überprüfung Dieses Mal schreibe ich, um mehr über ** bedingte Verzweigung ** zu erfahren.

[Einführung in Java]

Was ist bedingte Verzweigung?

Die auszuführende Verarbeitung wird in Abhängigkeit davon aufgeteilt, ob die Bedingungen im Quellcode erfüllt sind. Wenn 〇〇, Prozess A, wenn △△, Prozess B. Es ist wie .

if-Anweisung

Es wird verwendet, wenn Sie einen bedingten Ausdruck haben und die Verarbeitung gemäß dem Ergebnis dieser Bedingung ausführen. Das Ergebnis des bedingten Ausdrucks wird mit einem booleschen Wert (true, false) zurückgegeben. Wenn ** true, wird die Verarbeitung in der if-Anweisung ausgeführt. ** **.

Syntax


if(Bedingter Ausdruck) { 
wird bearbeitet
};

Zum Beispiel **, wenn der bedingte Ausdruck wahr ist. ** **.

Beispiel wo wenn wahr ist


int num = 10;
if (num < 20) {
  System.out.println("Der num-Wert ist kleiner als 20");
}
System.out.println("Verarbeitung nach der if-Anweisung");

Das Ausführungsergebnis ist wie folgt.

python


Der num-Wert ist kleiner als 20
Verarbeitung nach der if-Anweisung

Da der bedingte Ausdruck beurteilt wird und das Ergebnis wahr ist, wird die Verarbeitung innerhalb des if-Anweisungsblocks und dann die Verarbeitung außerhalb des if-Blocks ausgeführt. Es wird der Fluss sein.

** Wenn der bedingte Ausdruck falsch ist. ** **.

Beispiel, wenn if falsch ist


int num = 10;
if (num < 5) {
  System.out.println("Der num-Wert ist kleiner als 5");
}
System.out.println("Verarbeitung nach der if-Anweisung");

Das Ausführungsergebnis ist wie folgt.

Ausführungsergebnis


Verarbeitung nach der if-Anweisung

Da der bedingte Ausdruck falsch ist, wird die Verarbeitung innerhalb des if-Anweisungsblocks nicht ausgeführt, und nur die nachfolgende Verarbeitung wird ausgeführt.

Es ist auch möglich, eine if-Anweisung in die if-Anweisung zu schreiben. Es heißt ** verschachtelt **. Seien Sie jedoch vorsichtig, da das Lesen schwierig ist, wenn Sie zu viele schreiben.

wenn verschachtelt


int num = 10;

if (num > 0) {
  System.out.println("num ist ein positiver Wert");
  if (num % 2 == 0) {
    System.out.println("num ist gerade");
  }
}

Vorsichtsmaßnahmen beim Vergleichen von Werten

Um zu vergleichen, ob die Werte gleich sind, schreiben Sie ==. Beachten Sie, dass es sich bei nur einem = um einen Zuweisungsoperator anstelle eines Vergleichsoperators handelt.

Das Folgende führt zu einem Kompilierungsfehler.

Ungültiger Code


int a = 20;
int b = 50;
if (a = b) { //Der bedingte Ausdruck gilt nicht, nur indem b durch a vom Typ int ersetzt wird.
  System.out.println("Die Werte von a und b sind gleich");
}

Vergleichen Sie die Werte wie folgt.

Gültiger Code


int a = 50;
int b = 50;
if (a == b) {
  System.out.println("Die Werte von a und b sind gleich");
}

Ausführungsergebnis


Die Werte von a und b sind gleich

Es gibt einige Muster, die keinen Kompilierungsfehler verursachen, selbst wenn Sie eine Zuweisung am bedingten Ausdruck vornehmen.

Beispiel für die Zuweisung im bedingten Ausdruck


boolean bool1 = false;
boolean bool2 = true;
if(bool1 = bool2) { //Als Ergebnis der Zuweisung wird der boolesche Wert zurückgegeben, sodass als bedingter Ausdruck kein Problem besteht.
  System.out.println("bool1: " + bool1);
  System.out.println("bool2: " + bool2);
}

Durch das Ersetzen von false bool2 durch false bool1 wird der bedingte Ausdruck wahr. Daher wird die Verarbeitung im if-Anweisungsblock ausgeführt.

Ausführungsergebnis


bool1: true
bool2: true

if-else-Anweisung

Sie können den Prozess, den Sie ausführen möchten, nicht nur beschreiben und ausführen, wenn der bedingte Ausdruck wahr ist, sondern auch, wenn er falsch ist.

Syntax


if(Bedingter Ausdruck) { 
Prozess 1
} else {
Prozess 2
};

Prozess 1 wird ausgeführt, wenn der bedingte Ausdruck wahr ist, und Prozess 2 wird ausgeführt, wenn der bedingte Ausdruck falsch ist.

Zum Beispiel **, wenn der bedingte Ausdruck wahr ist. ** **.

Beispiel wo wenn wahr ist


String name1 = "Yanagida";
String name2 = "Yanagida";
if (name1 == name2) {
  System.out.println("name1 und name2 sind gleich");
} else {
  System.out.println("name1 und name2 sind nicht gleich");
}
System.out.println("if-Verarbeitung nach else-Anweisung");

Das Ausführungsergebnis ist wie folgt.

Ausführungsergebnis


name1 und name2 sind gleich
if-Verarbeitung nach else-Anweisung

Da der bedingte Ausdruck wahr ist, wird die Verarbeitung innerhalb des if-Anweisungsblocks ausgeführt. Dann wird das Innere des else-Blocks nicht ausgeführt, und die Verarbeitung außerhalb des if-Anweisungsblocks wird ausgeführt. Es wird der Fluss sein.

** Wenn der bedingte Ausdruck falsch ist. ** **.

Beispiel, wenn if falsch ist


String name1 = "Cristiano Ronaldo";
String name2 = "Lionel Messi";
if (name1 == name2) {
  System.out.println("name1 und name2 sind gleich");
} else {
  System.out.println("name1 und name2 sind nicht gleich");
}
System.out.println("if-Verarbeitung nach else-Anweisung");

Das Ausführungsergebnis ist wie folgt.

Ausführungsergebnis


name1 und name2 sind nicht gleich
if-Verarbeitung nach else-Anweisung

Da der bedingte Ausdruck falsch ist, wird die Verarbeitung innerhalb des if-Anweisungsblocks nicht ausgeführt, und die Verarbeitung des else-Anweisungsblocks wird ausgeführt. Dann wird die Verarbeitung außerhalb des if-Anweisungsblocks ausgeführt. Es wird der Fluss sein.

Jetzt können Sie die Verarbeitung implementieren, wenn der bedingte Ausdruck falsch ist.

sonst wenn Anweisung

Bisher gab es nur einen bedingten Ausdruck, aber Sie können mehrere bedingte Ausdrücke verwenden, indem Sie die else-if-Anweisung verwenden.

Syntax


if(Bedingter Ausdruck 1) { 
Prozess 1
} else if (Bedingter Ausdruck 2) {
Prozess 2
} else {
Prozess 3
};

Prozess 1 wird ausgeführt, wenn der bedingte Ausdruck 1 wahr ist, Prozess 2 wird ausgeführt, wenn der bedingte Ausdruck 2 wahr ist, und Prozess 3 wird ausgeführt, wenn der erste und der zweite bedingte Ausdruck falsch sind.

** Die else if-Anweisung wertet die bedingten Ausdrücke in der Reihenfolge von oben aus. Wenn eine bestimmte Bedingung erfüllt ist, wird nur die Verarbeitungsanweisung in diesem Block ausgeführt. ** **.

Zum Beispiel **, wenn der bedingte Ausdruck if wahr ist. ** **.

Beispiel wo wenn wahr ist


String color = "red";
if (color == "red") {
  System.out.println("Farbe ist rot");
} else if (color == "yellow") {
  System.out.println("Farbe ist gelb");
} else {
  System.out.println("Farbe ist weder rot noch gelb");
  System.out.println("Die Farbe ist" + color);
}
System.out.println("sonst wenn Beispiel");

Das Ausführungsergebnis ist wie folgt.

Ausführungsergebnis


Farbe ist rot
sonst wenn Beispiel

Da der erste bedingte Ausdruck wahr ist, wird die Verarbeitung innerhalb des if-Anweisungsblocks ausgeführt. Dann werden das else if und das Innere des else-Blocks nicht ausgeführt, und die Verarbeitung außerhalb des if-Anweisungsblocks wird ausgeführt. Es wird der Fluss sein.

Dann ** wenn der bedingte Ausdruck sonst wenn wahr ist. ** **.

else-Beispiel wo wenn wahr ist


String color = "yellow";
if (color == "red") {
  System.out.println("Farbe ist rot");
} else if (color == "yellow") {
  System.out.println("Farbe ist gelb");
} else {
  System.out.println("Farbe ist weder rot noch gelb");
  System.out.println("Die Farbe ist" + color);
}
System.out.println("sonst wenn Beispiel");

Das Ausführungsergebnis ist wie folgt.

Ausführungsergebnis


Farbe ist gelb
sonst wenn Beispiel

Da der erste bedingte Ausdruck falsch ist, wird die Verarbeitung innerhalb des if-Anweisungsblocks nicht ausgeführt. Und da der zweite bedingte Ausdruck wahr ist, wird die Verarbeitung innerhalb des else if-Anweisungsblocks ausgeführt. Das Innere des else-Blocks wird nicht ausgeführt, und die Verarbeitung außerhalb des if-Anweisungsblocks wird ausgeführt. Es wird der Fluss sein.

** Schließlich, wenn alle bedingten Ausdrücke falsch sind. ** **.

Beispiel, in dem alle bedingten Ausdrücke falsch sind


String color = "blue";
if (color == "red") {
  System.out.println("Farbe ist rot");
} else if (color == "yellow") {
  System.out.println("Farbe ist gelb");
} else {
  System.out.println("Farbe ist weder rot noch gelb");
  System.out.println("Die Farbe ist" + color);
}
System.out.println("sonst wenn Beispiel");

Das Ausführungsergebnis ist wie folgt.

Ausführungsergebnis


Farbe ist weder rot noch gelb
Farbe ist blau
sonst wenn Beispiel

Da das Ergebnis der ersten und zweiten Bedingung und des bedingten Ausdrucks falsch ist, wird die Verarbeitung innerhalb des else-Blocks ausgeführt. Dann wird die Verarbeitung außerhalb des if-Anweisungsblocks ausgeführt. Es wird der Fluss sein.

Dies ermöglicht es, die Verarbeitung nach mehreren Bedingungsurteilen aufzuteilen.

Dreiecksoperator

Ein Operator, der einen Ausdruck gemäß dem Ergebnis eines bedingten Ausdrucks ausführt.

Syntax


Bedingter Ausdruck?Gleichung 1:Gleichung 2;

Wenn der bedingte Ausdruck true zurückgibt, wird Ausdruck 1 ausgeführt, und wenn false, wird Ausdruck 2 ausgeführt.

Zum Beispiel **, wenn der bedingte Ausdruck wahr ist. ** **.

Beispiel eines ternären Operators


String name = "yamada";
String str = "Die Länge des Namens ist";
str += name.length() >= 4 ?  "4 oder mehr" : "3 oder weniger";
System.out.println(str);

Das Ausführungsergebnis ist wie folgt.

Ausführungsergebnis


Die Namenslänge beträgt 4 oder mehr

Der bedingte Ausdruck lautet "name.length ()> = 4". Wenn true, "4 oder mehr" und wenn false, wird "3 oder weniger" mit der in str gespeicherten Zeichenfolge kombiniert.

Der gleiche Vorgang wird in der if-else-Anweisung wie folgt beschrieben.

if-Im Falle von sonst


String name = "yamada";
String str = "Die Länge des Namens ist";
if (name.length() >= 4) {
  str += "4 oder mehr";
} else {
  str += "3 oder weniger";
}
System.out.println(str);

Der ternäre Operator ist einfacher zu schreiben als die if-else-Anweisung.

switch-Anweisung

Das Bewertungsergebnis des Ausdrucks wird mit der Konstante verglichen, und wenn sie übereinstimmen, wird der Prozess ausgeführt. Dies ist eine Methode zum Durchführen einer Verarbeitung mit mehreren Zweigen.

Syntax


switch (Formel) {
Fallkonstante 1:
Prozess 1;
    break;
Fallkonstante 2:
Prozess 2;
    break;
  default:
Prozess 3;
}

Wenn das Ergebnis des Ausdrucks mit Konstante 1 übereinstimmt, wird Prozess 1 ausgeführt, und wenn es mit Konstante 2 übereinstimmt, wird Prozess 2 ausgeführt. Wenn keine Übereinstimmung vorliegt, wird die Verarbeitung unter dem Standardwert ausgeführt. (Die Beschreibung der Standardeinstellung ist optional.)

Beispiel für eine Switch-Anweisung


String color = "blue";

switch (color) {
  case "red":
    System.out.println("Farbe ist rot");
    break;
  case "yellow":
    System.out.println("Farbe ist gelb");
    break;
  case "blue":
    System.out.println("Farbe ist blau");
    break;
  default:
    System.out.println("Die Farbe ist" + color);
    break;
}

Das Ausführungsergebnis ist wie folgt.

Ausführungsergebnis


Farbe ist blau

Das Ergebnis des Ausdrucks ist die Zeichenfolge "blau", die dem dritten Fall entspricht. Daher wird die Verarbeitung darin ausgeführt.

Hinweise zu switch-Anweisungen

Ausdrucksdatentyp

Der Wert, der im Ausdruck der switch-Anweisung beschrieben werden kann, muss der Wert eines der Datentypen ** char, byte, short, int, seiner Wrapper-Klasse, enum und String ** sein.

Wenn ein anderer Typ angegeben wird, tritt ein Kompilierungsfehler auf.

Fehler beim Ausdruck der Anweisung


double d = 2.0;
switch (d) { // Cannot switch on a value of type double. Only convertible int values, strings or enum variables are permitted
  //Kürzung
}

Ergebnis des Ausdrucks

Wenn das Ergebnis des Ausdrucks ** null ** ist und angenommen wird, dass der Datentyp des Ausdrucks eingehalten wird, wird zur Laufzeit eine Ausnahme ausgelöst, auch wenn die Kompilierung erfolgreich ist.

Ausnahme des Ausdrucks der switch-Anweisung


String ex = null;
switch (ex) {
  case "a":
    System.out.println("a");
    break;
  case "b":
    System.out.println("b");
    break;
  default:
    System.out.println("nothing");
    break;
}

Ausführungsergebnis


Exception in thread "main" java.lang.NullPointerException
        at Condition.main(Condition.java:102)

Verwenden Sie Operatoren in ()

Es gibt kein Problem, auch wenn Sie in () berechnen.

Ergänzung und

()Berechnungsbeispiel in


int a = 0;
switch (a + 1) {
  case 0:
    System.out.println("0");
    break;
  case 1:
    System.out.println("1");
    break;
  case 2:
    System.out.println("2");
    break;
}

Ausführungsergebnis


1

Dekrement etc.

()Berechnungsbeispiel 2


int a = 0;
switch (--a) {
  case 0:
    System.out.println("0");
    break;
  case 1:
    System.out.println("1");
    break;
  default:
    System.out.println("Es gibt keine entsprechende Nummer");
    break;
}

Ausführungsergebnis


Es gibt keine entsprechende Nummer

Das Deklarieren einer Variablen in () führt jedoch zu einem Kompilierungsfehler.

()Variablendeklaration mit Fehler


switch (int a = 0;) {
  case 0:
    System.out.println("0");
    break;
  case 1:
    System.out.println("1");
    break;
  case 2:
    System.out.println("2");
    break;
}

Wert für den Fall angegeben

(1) Wenn der Datentyp des Ergebnisses des Ausdrucks und der für den Fall angegebene Datentyp nicht übereinstimmen, tritt ein Kompilierungsfehler auf.

Fehler des angegebenen Falls


int num = 10;
switch (num) {
  case "0": // Type mismatch: cannot convert from String to int
    System.out.println("0");
    break;
  case "1": // Type mismatch: cannot convert from String to int
    System.out.println("1");
    break;
  case "2": // Type mismatch: cannot convert from String to int
    System.out.println("2");
    break;
}

(2) Wenn es sich nicht um ein Literal oder eine Konstante handelt, tritt ein Kompilierungsfehler auf.

Fehler 2 des angegebenen Falls


int num = 10;
int a = 1;
int b = 2;
switch (num) {
  case a: // case expressions must be constant expressions
    System.out.println("1");
    break;
  case b: // case expressions must be constant expressions
    System.out.println("2");
    break;
  default:
    System.out.println("nothing");
    break;
}

In diesem Fall tritt ein Fehler auf, da im Fall die Variablen a und b angegeben sind. Fügen Sie den letzten Modifikator hinzu, um ihn zu einer Konstanten zu machen, oder geben Sie ein Literal an.

Fehler 2 Korrektur ver des im Fall angegebenen Wertes


int num = 10;
final int a = 1;

switch (num) {
  case a:
    System.out.println("1");
    break;
  case 2:
    System.out.println("2");
    break;
  default:
    System.out.println("nothing");
    break;
}

(3) Wenn null angegeben wird, tritt ein Kompilierungsfehler auf.

Fehler 3 des im Fall angegebenen Wertes


String name = "Tanaka";

switch (name) {
  case "Yamada":
    System.out.println("Yamada");
    break;
  case null: // case expressions must be constant expressions
    System.out.println("null");
    break;
}

④ Vorhandensein oder Nichtvorhandensein einer Unterbrechungserklärung

Das Wort ** break; ** fehlt in der switch-Anweisung, nachdem der `-Prozess ausgeführt wurde. `` Wenn Sie es vergessen, werden Sie es zum ersten Mal mit dem nächsten Fall vergleichen. Seien Sie also vorsichtig.

Wenn du vergisst zu brechen


int num = 10;

switch (num) {
  case 0:
    System.out.println("0");
    break;
  case 10:
    System.out.println("10");
    // break;Ich habe vergessen zu schreiben
  default:
    System.out.println("nothing");
    break;
}

Nachdem die Verarbeitung in Fall 10 ausgeführt wurde, wird auch die Standardverarbeitung ausgeführt, da keine break-Anweisung vorhanden ist.

Ausführungsergebnis


10
nothing

Achten Sie darauf, dass Sie kein unbeabsichtigtes Ausführungsergebnis erhalten.

Am Ende

Ich habe gelernt, wie man den Prozess gemäß den Bedingungen als Prozessprozedur des Programms verzweigt. In Anbetracht der Lesbarkeit des Quellcodes möchte ich ihn je nach Situation richtig verwenden.

Referenzseite

** Verarbeitungszweig ** ** Java-Switch-Anweisung **

Recommended Posts

[Einführung in Java] Bedingte Verzweigung (if-Anweisung, if-else-Anweisung, else if-Anweisung, ternärer Operator, switch-Anweisung)
Java # 4 studieren (bedingte Verzweigung / if-Anweisung)
[Java] Bedingte Verzweigung ist eine if-Anweisung, es gibt jedoch auch einen bedingten Operator.
Bedingte Java-Verzweigung: Erstellen und Studieren von switch-Anweisungen
Ich möchte die if-else-Anweisung für bedingte Verzweigungen in Java vereinfachen
Java, if-Anweisung / switch-Anweisung ab Anfänger
[Java] "Einstellung" mit Enum anstelle der bedingten Verzweigung durch die if-Anweisung -Strategy Enum
Bedingter Zweig von Ruby. if, bedingter Operator (ternärer Operator), es sei denn, case
[Java] Einführung in Java
Einführung in Java
Bedingte Verzweigung des Ergebnisses einer SQL-Anweisung, die nur eine in Java durchsucht
Java-Switch-Anweisung
10 Entspricht der if-Anweisung
Einführung in den Java-Befehl
Java-Überprüfung ③ (Steuerungssyntax [if / switch / while / for], bedingter Ausdruck)
Java if- und switch-Anweisungen
[Java] Einführung in den Lambda-Ausdruck
[Java] Einführung in die Stream-API
Java (bedingte Verzweigung und Wiederholung)
[Einführung in Janken (ähnliche) Spiele] Java