Probleme de switch

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. Modérateur
    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
    1. que dois-je faire ?
  2. Modérateur
    Quel est le type de "input" sur lequel tu fais un "next" ?
    1. clavier .le switch prend en charge ce que l'utilisateur tape au clavier
    2. Modérateur
      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;
      	}
      }
    3. c'est ce que j'ai fait la declaration du scanner est en haut du code j'ai oublié de la mentionner .
  3. Salut,

    Tu es sur que input.next(); retourne une chaine de caractère ?
    1. normalement oui .
    2. Quelle est l'erreur exactement ?
    3. on me di ke le switch ne prend pas en charge les type string
    4. Pourtant si...
      A mon avis ton input.next() te renvoi un code de caractère plutot.
      Essai avec un "reponse.toString()"
    5. Modérateur
      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à...