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.
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
.
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");
}
}
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
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.
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.
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.
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.
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
}
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)
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;
}
(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.
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.
** Verarbeitungszweig ** ** Java-Switch-Anweisung **
Recommended Posts