salut, je vous en prie, je voudrais comprendre pourquoi le code ci-dessous crée une erreur de compilation. s'il vous plait, expliquez moi le principe qui en découle. merci.
final String[] arr = { "L", "R", "T", "B" };
String str = "t";
switch (str) {
case arr[0]:
System.out.println("LEFT");
break;
case arr[1]:
System.out.println("RIGHT");
break;
case arr[2]:
System.out.println("TOP");
break;
case arr[3]:
System.out.println("BOTTOM");
break;
default:
System.out.println("NA");
break;
}
A Vaincre sans péril on finit par triompher sans gloire -> le Cid de corneille
Le code ci-dessus crée une erreur de compilation car vous ne pouvez pas utiliser un tableau de chaînes comme énumération dans un switch statement. Dans un switch statement, l'expression qui suit le mot-clé switch doit être de type byte, short, int, char, ou String. Vous ne pouvez pas utiliser un tableau de chaînes comme expression.
Pour résoudre cette erreur de compilation, vous pouvez utiliser une structure de contrôle de flux différente, comme un if statement ou un for loop, pour parcourir les éléments du tableau et vérifier si l'une des valeurs correspond à la chaîne str. Vous pouvez également utiliser une structure de données différente, comme un Map, pour stocker les valeurs et les utiliser comme énumération dans un switch statement.
Voici comment le code pourrait être modifié pour utiliser un ifstatement :
final String[] arr = { "L", "R", "T", "B" }; String str = "t"; if (str.equals(arr[0])) { System.out.println("LEFT"); } else if (str.equals(arr[1])) { System.out.println("RIGHT"); } else if (str.equals(arr[2])) { System.out.println("TOP"); } else if (str.equals(arr[3])) { System.out.println("BOTTOM"); } else { System.out.println("NA"); }
Et voici comment le code pourrait être modifié pour utiliser un forloop :
final String[] arr = { "L", "R", "T", "B" }; String str = "t"; boolean found = false; for (String s : arr) { if (str.equals(s)) { found = true; break; } } if (found) { System.out.println("Found in array"); } else { System.out.println("Not found in array"); }