Pour ceux qui viennent de commencer à apprendre la programmation, y compris le langage Java, et ceux qui l'ont déjà appris, pour examen Cette fois, j'écris pour en savoir plus sur le ** branchement conditionnel **.
Il s'agit de diviser le traitement à exécuter selon que les conditions du code source sont satisfaites. ʻSi 〇〇, processus A, si △△, processus B. C'est comme `.
Il est utilisé lorsque vous avez une expression conditionnelle et effectuez un traitement en fonction du résultat de cette condition.
Le résultat de l'expression conditionnelle est retourné avec une valeur booléenne (true, false)
, et lorsque ** true, le traitement dans l'instruction if est exécuté. ** **
syntaxe
if(Expression conditionnelle) {
En traitement
};
Par exemple, ** si l'expression conditionnelle est vraie. ** **
Exemple où if est vrai
int num = 10;
if (num < 20) {
System.out.println("la valeur num est inférieure à 20");
}
System.out.println("Traitement après l'instruction if");
Le résultat de l'exécution est le suivant.
python
la valeur num est inférieure à 20
Traitement après l'instruction if
Puisque l'expression conditionnelle est jugée et que le résultat est vrai, le traitement à l'intérieur du bloc d'instructions if est exécuté, puis le traitement à l'extérieur du bloc if est exécuté. Ce sera le flux.
** Si l'expression conditionnelle est fausse. ** **
exemple si if est faux
int num = 10;
if (num < 5) {
System.out.println("la valeur num est inférieure à 5");
}
System.out.println("Traitement après l'instruction if");
Le résultat de l'exécution est le suivant.
Résultat d'exécution
Traitement après l'instruction if
Puisque l'expression conditionnelle est fausse, le traitement à l'intérieur du bloc d'instructions if n'est pas exécuté et seul le traitement suivant est exécuté.
Il est également possible d'écrire une instruction if à l'intérieur de l'instruction if. Il s'appelle ** imbriqué **. Cependant, soyez prudent car il sera difficile à lire si vous en écrivez trop.
si nidification
int num = 10;
if (num > 0) {
System.out.println("num est une valeur positive");
if (num % 2 == 0) {
System.out.println("num est pair");
}
}
Pour comparer si les valeurs sont identiques, écrivez ==
. Notez que s'il n'y a qu'un seul =
, ce sera un opérateur d'affectation au lieu d'un opérateur relationnel.
Ce qui suit entraînera une erreur de compilation.
Code invalide
int a = 20;
int b = 50;
if (a = b) { //L'expression conditionnelle ne tient pas, simplement en remplaçant b par a de type int.
System.out.println("Les valeurs de a et b sont les mêmes");
}
Comparez les valeurs comme suit.
Code valide
int a = 50;
int b = 50;
if (a == b) {
System.out.println("Les valeurs de a et b sont les mêmes");
}
Résultat d'exécution
Les valeurs de a et b sont les mêmes
Certains modèles ne provoquent pas d'erreur de compilation même si vous effectuez une affectation au niveau de l'expression conditionnelle.
Exemple d'affectation dans une expression conditionnelle
boolean bool1 = false;
boolean bool2 = true;
if(bool1 = bool2) { //À la suite de l'affectation, la valeur booléenne est renvoyée, il n'y a donc aucun problème en tant qu'expression conditionnelle.
System.out.println("bool1: " + bool1);
System.out.println("bool2: " + bool2);
}
Suite à la substitution de true bool2 par false bool1, l'expression conditionnelle devient vraie. Par conséquent, le traitement dans le bloc d'instructions if est exécuté.
Résultat d'exécution
bool1: true
bool2: true
Vous pouvez décrire et exécuter le processus que vous souhaitez exécuter non seulement lorsque l'expression conditionnelle est vraie, mais également lorsqu'elle est fausse.
syntaxe
if(Expression conditionnelle) {
Processus 1
} else {
Processus 2
};
Le processus 1 est exécuté lorsque l'expression conditionnelle est vraie et le processus 2 est exécuté lorsque l'expression conditionnelle est fausse.
Par exemple, ** si l'expression conditionnelle est vraie. ** **
Exemple où if est vrai
String name1 = "Yanagida";
String name2 = "Yanagida";
if (name1 == name2) {
System.out.println("name1 et name2 sont identiques");
} else {
System.out.println("name1 et name2 ne sont pas identiques");
}
System.out.println("if-Traitement après la déclaration");
Le résultat de l'exécution est le suivant.
Résultat d'exécution
name1 et name2 sont identiques
if-Traitement après la déclaration
Puisque l'expression conditionnelle est vraie, le traitement à l'intérieur du bloc d'instructions if est exécuté. Ensuite, l'intérieur du bloc else n'est pas exécuté et le traitement en dehors du bloc d'instructions if est exécuté. Ce sera le flux.
** Si l'expression conditionnelle est fausse. ** **
exemple si if est faux
String name1 = "Cristiano Ronaldo";
String name2 = "Lionel Messi";
if (name1 == name2) {
System.out.println("name1 et name2 sont identiques");
} else {
System.out.println("name1 et name2 ne sont pas identiques");
}
System.out.println("if-Traitement après la déclaration");
Le résultat de l'exécution est le suivant.
Résultat d'exécution
name1 et name2 ne sont pas identiques
if-Traitement après la déclaration
Puisque l'expression conditionnelle est fausse, le traitement à l'intérieur du bloc d'instructions if n'est pas exécuté et le traitement du bloc d'instructions else est en cours d'exécution. Ensuite, le traitement en dehors du bloc d'instructions if est exécuté. Ce sera le flux.
Vous pouvez maintenant implémenter le traitement lorsque l'expression conditionnelle est fausse.
Jusqu'à présent, il n'y avait qu'une seule expression conditionnelle, mais vous pouvez utiliser plusieurs expressions conditionnelles en utilisant l'instruction else if.
syntaxe
if(Expression conditionnelle 1) {
Processus 1
} else if (Expression conditionnelle 2) {
Processus 2
} else {
Processus 3
};
Le processus 1 est exécuté lorsque l'expression conditionnelle 1 est vraie, le processus 2 est exécuté lorsque l'expression conditionnelle 2 est vraie et le processus 3 est exécuté lorsque les première et deuxième expressions conditionnelles sont fausses.
** L'instruction else if évalue les expressions conditionnelles dans l'ordre à partir du haut, et si une certaine condition est vraie, seule l'instruction de traitement de ce bloc est exécutée. ** **
Par exemple, ** si l'expression conditionnelle est vraie. ** **
Exemple où if est vrai
String color = "red";
if (color == "red") {
System.out.println("la couleur est rouge");
} else if (color == "yellow") {
System.out.println("la couleur est jaune");
} else {
System.out.println("la couleur n'est ni rouge ni jaune");
System.out.println("La couleur est" + color);
}
System.out.println("sinon si exemple");
Le résultat de l'exécution est le suivant.
Résultat d'exécution
la couleur est rouge
sinon si exemple
Puisque la première expression conditionnelle est vraie, le traitement à l'intérieur du bloc d'instructions if est exécuté. Ensuite, le else if et l'intérieur du bloc else ne sont pas exécutés, et le traitement en dehors du bloc d'instructions if est exécuté. Ce sera le flux.
Puis ** si l'expression conditionnelle sinon si est vraie. ** **
else-Exemple où if est vrai
String color = "yellow";
if (color == "red") {
System.out.println("la couleur est rouge");
} else if (color == "yellow") {
System.out.println("la couleur est jaune");
} else {
System.out.println("la couleur n'est ni rouge ni jaune");
System.out.println("La couleur est" + color);
}
System.out.println("sinon si exemple");
Le résultat de l'exécution est le suivant.
Résultat d'exécution
la couleur est jaune
sinon si exemple
Puisque la première expression conditionnelle est fausse, le traitement à l'intérieur du bloc d'instructions if n'est pas exécuté. Et comme la deuxième expression conditionnelle est vraie, le traitement dans le bloc d'instruction else if est exécuté. L'intérieur du bloc else n'est pas exécuté et le traitement en dehors du bloc d'instructions if est exécuté. Ce sera le flux.
** Enfin, si toutes les expressions conditionnelles sont fausses. ** **
Exemple où toutes les expressions conditionnelles sont fausses
String color = "blue";
if (color == "red") {
System.out.println("la couleur est rouge");
} else if (color == "yellow") {
System.out.println("la couleur est jaune");
} else {
System.out.println("la couleur n'est ni rouge ni jaune");
System.out.println("La couleur est" + color);
}
System.out.println("sinon si exemple");
Le résultat de l'exécution est le suivant.
Résultat d'exécution
la couleur n'est ni rouge ni jaune
la couleur est bleue
sinon si exemple
Étant donné que le résultat des première et deuxième conditions et de l'expression conditionnelle est faux, le traitement à l'intérieur du bloc else est exécuté. Ensuite, le traitement en dehors du bloc d'instructions if est exécuté. Ce sera le flux.
Cela permet de diviser le traitement selon plusieurs jugements de condition.
Un opérateur qui exécute une expression en fonction du résultat d'une expression conditionnelle.
syntaxe
Expression conditionnelle?Équation 1:Équation 2;
Si l'expression conditionnelle renvoie true, alors l'expression 1 est exécutée et si false, l'expression 2 est exécutée.
Par exemple, ** si l'expression conditionnelle est vraie. ** **
Exemple d'opérateur ternaire
String name = "yamada";
String str = "La longueur du nom est";
str += name.length() >= 4 ? "4 ou plus" : "3 ou moins";
System.out.println(str);
Le résultat de l'exécution est le suivant.
Résultat d'exécution
La longueur du nom est de 4 ou plus
L'expression conditionnelle est name.length ()> = 4
.
Si vrai, «4 ou plus», et si faux, «3 ou moins» est combiné avec la chaîne de caractères stockée dans str.
Le même processus est décrit dans l'instruction if-else comme suit.
if-Dans le cas d'autre
String name = "yamada";
String str = "La longueur du nom est";
if (name.length() >= 4) {
str += "4 ou plus";
} else {
str += "3 ou moins";
}
System.out.println(str);
L'opérateur ternaire est plus facile à écrire que l'instruction if-else.
Le résultat de l'évaluation de l'expression est comparé à la constante et, s'ils correspondent, le processus est exécuté. Il s'agit d'une méthode pour effectuer un traitement multi-branches.
syntaxe
switch (formule) {
constante de cas 1:
Processus 1;
break;
constante de cas 2:
Processus 2;
break;
default:
Processus 3;
}
Si le résultat de l'expression correspond à la constante 1, le processus 1 est exécuté et s'il correspond à la constante 2, le processus 2 est exécuté. S'il n'y a pas de correspondance, le traitement ci-dessous par défaut est exécuté. (La description de la valeur par défaut est facultative)
Exemple d'instruction Switch
String color = "blue";
switch (color) {
case "red":
System.out.println("la couleur est rouge");
break;
case "yellow":
System.out.println("la couleur est jaune");
break;
case "blue":
System.out.println("la couleur est bleue");
break;
default:
System.out.println("La couleur est" + color);
break;
}
Le résultat de l'exécution est le suivant.
Résultat d'exécution
la couleur est bleue
Le résultat de l'expression est la chaîne "blue", qui correspond à la troisième casse. Par conséquent, le traitement qu'il contient est exécuté.
La valeur qui peut être décrite dans l'expression de l'instruction switch doit être la valeur de l'un des types de données ** char, byte, short, int, sa classe wrapper, enum et String **.
Si un autre type est spécifié, une erreur de compilation se produira.
Erreur d'expression de l'instruction Switch
double d = 2.0;
switch (d) { // Cannot switch on a value of type double. Only convertible int values, strings or enum variables are permitted
//réduction
}
Si le résultat de l'expression est ** null **, en supposant que le type de données de l'expression est respecté, une exception sera levée au moment de l'exécution même si la compilation réussit.
Exception de l'expression d'instruction switch
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;
}
Résultat d'exécution
Exception in thread "main" java.lang.NullPointerException
at Condition.main(Condition.java:102)
Il n'y a pas de problème même si vous calculez entre ().
Ajout et
()Exemple de calcul dans
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;
}
Résultat d'exécution
1
Décrémenter etc.
()Exemple de calcul 2
int a = 0;
switch (--a) {
case 0:
System.out.println("0");
break;
case 1:
System.out.println("1");
break;
default:
System.out.println("Il n'y a pas de numéro correspondant");
break;
}
Résultat d'exécution
Il n'y a pas de numéro correspondant
Cependant, déclarer une variable dans () entraînera une erreur de compilation.
()Déclaration de variable avec erreur
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) Si le type de données du résultat de l'expression et le type de données spécifié en cas ne correspondent pas, une erreur de compilation se produit.
Erreur de la valeur spécifiée en cas
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) S'il ne s'agit pas d'un littéral ou d'une constante, une erreur de compilation se produira.
Erreur 2 de la valeur spécifiée en cas
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;
}
Dans ce cas, une erreur se produira car les variables a et b sont spécifiées dans le cas. Ajoutez le modificateur final pour en faire une constante ou spécifiez un littéral.
Correction d'erreur 2 ver de la valeur spécifiée en cas
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) Si null est spécifié, une erreur de compilation se produira.
Erreur 3 de la valeur spécifiée en cas
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;
}
④ Présence ou absence de déclaration break
Le mot ** break; ** est absent de l'instruction switch une fois que le processus a été exécuté. '' Si vous l'oubliez, vous le comparerez au cas suivant pour la première fois, alors soyez prudent.
Quand tu oublies de rompre
int num = 10;
switch (num) {
case 0:
System.out.println("0");
break;
case 10:
System.out.println("10");
// break;J'ai oublié d'écrire
default:
System.out.println("nothing");
break;
}
Après l'exécution du traitement dans le cas 10, le traitement par défaut est également exécuté car il n'y a pas d'instruction break.
Résultat d'exécution
10
nothing
Veillez à ne pas obtenir un résultat d'exécution involontaire.
J'ai appris à brancher le processus selon les conditions comme la procédure de processus du programme. Compte tenu de la lisibilité du code source, je souhaite l'utiliser correctement en fonction de la situation.
** Branche de traitement ** ** Instruction de commutation Java **
Recommended Posts