Probleme de switch

omar_k Messages postés 57 Statut Membre -  
KX Messages postés 19031 Statut Modérateur -
Bonjour,

String reponse = input.next();
switch (reponse) {
case "z":
Actions_multi.avancer();
break;
case "q":
Actions_multi.pivotGauche();
break;
case "d":
Actions_multi.pivotDroit();
break;
case "s":
Actions_multi.tourner();
break;
default:
System.out.println("Vous n'avez pas saisi la bonne lettre");
break;
}

voila mon code apparemment il ya un problème avec "reponse" qui pourrai pas passer avec switch qui ne prend pas en charge les string.
pourriez vous m aider
merci d avance.

3 réponses

  1. fjbvqlkjhv Messages postés 359 Statut Membre 27
     
    Salut,

    Tu es sur que input.next(); retourne une chaine de caractère ?
    0
    1. omar_k Messages postés 57 Statut Membre
       
      normalement oui .
      0
    2. fjbvqlkjhv Messages postés 359 Statut Membre 27
       
      Quelle est l'erreur exactement ?
      0
    3. omar_k Messages postés 57 Statut Membre
       
      on me di ke le switch ne prend pas en charge les type string
      0
    4. fjbvqlkjhv Messages postés 359 Statut Membre 27
       
      Pourtant si...
      A mon avis ton input.next() te renvoi un code de caractère plutot.
      Essai avec un "reponse.toString()"
      0
    5. KX Messages postés 19031 Statut Modérateur 3 020
       
      En Java, le switch peut prendre en charge les String lorsque leurs valeurs sont connues à la compilation, donc le problème n'est pas là...
      0
  2. KX Messages postés 19031 Statut Modérateur 3 020
     
    Quel est le type de "input" sur lequel tu fais un "next" ?
    0
    1. omar_k Messages postés 57 Statut Membre
       
      clavier .le switch prend en charge ce que l'utilisateur tape au clavier
      0
    2. KX Messages postés 19031 Statut Modérateur 3 020
       
      Le problème c'est que "clavier" n'est pas une classe standard, alors comment savoir ce qu'il y a dedans ?

      Avec un Scanner par exemple, cela fonctionne sans problème :

      Scanner input = new Scanner(System.in);
      
      while (true)
      {
      	String reponse = input.next();
      	System.out.println(reponse.length());
      	
      	switch (reponse)
      	{
      	case "z":
      		//Actions_multi.avancer();
      		System.out.println("z");
      		break;
      	case "q":
      		//Actions_multi.pivotGauche();
      		System.out.println("q");
      		break;
      	case "d":
      		//Actions_multi.pivotDroit();
      		System.out.println("d");
      		break;
      	case "s":
      		//Actions_multi.tourner();
      		System.out.println("s");
      		break;
      	default:
      		System.out.println("Vous n'avez pas saisi la bonne lettre");
      		//break;
      	}
      }
      0
    3. omar_k Messages postés 57 Statut Membre
       
      c'est ce que j'ai fait la declaration du scanner est en haut du code j'ai oublié de la mentionner .
      0
  3. KX Messages postés 19031 Statut Modérateur 3 020
     
    Le switch n'est autorisé sur les String qu'à partir de la version Java 7, et n'est possible que si les valeurs des "cases" sont connues à la compilation.

    De plus Eclipse ne prend en charge cette fonctionnalité qu'à partir de la version Indigo 3.7.1, ta version Helios ne peux pas convenir !

    Il faudrait que tu te mettes à jour avec les dernières versions : Java 7.10 et Eclipse 4.2.1La confiance n'exclut pas le contrôle
    0
    1. omar_k Messages postés 57 Statut Membre
       
      que dois-je faire ?
      0
    2. KX Messages postés 19031 Statut Modérateur 3 020
       
      "Il faudrait que tu te mettes à jour avec les dernières versions : Java 7.10 et Eclipse 4.2.1"

      Java SE Downloads
      Eclipse Downloads
      0