Partage
  • Partager sur Facebook
  • Partager sur Twitter

comprehension du concept

JAVA 8

25 décembre 2022 à 1:56:29

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;
    }



  • Partager sur Facebook
  • Partager sur Twitter
A Vaincre sans péril on finit par triompher sans gloire  ->  le Cid de corneille
29 décembre 2022 à 7:56:03

Si il y a une erreur de compilation, il y a un message.

Un programmeur Java confirmé lit d'abord les messages avant de poser des questions :-)

 ---

Alternative : utiliser une map comme table de conversion

    public static void main(String[] args) {
        final Map<String, String> table = Map.of(
                "L", "Laurel",
                "H", "Hardy");

        final String exemples[] = {"L", "H", "X"};

        for (String e : exemples) {
            String v = table.getOrDefault(e, "Inconnu");
            System.out.format("%s -> %s\n", e, v);
        }
    }

Exécution

L -> Laurel
H -> Hardy
X -> Inconnu



-
Edité par michelbillaud 29 décembre 2022 à 8:23:22

  • Partager sur Facebook
  • Partager sur Twitter
31 décembre 2022 à 14:43:45

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"); }


  • Partager sur Facebook
  • Partager sur Twitter