Probleme de switch

omar_k Messages postés 49 Date d'inscription   Statut Membre Dernière intervention   -  
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   -
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.
A voir également:

3 réponses

fjbvqlkjhv Messages postés 315 Date d'inscription   Statut Membre Dernière intervention   27
 
Salut,

Tu es sur que input.next(); retourne une chaine de caractère ?
0
omar_k Messages postés 49 Date d'inscription   Statut Membre Dernière intervention  
 
normalement oui .
0
fjbvqlkjhv Messages postés 315 Date d'inscription   Statut Membre Dernière intervention   27
 
Quelle est l'erreur exactement ?
0
omar_k Messages postés 49 Date d'inscription   Statut Membre Dernière intervention  
 
on me di ke le switch ne prend pas en charge les type string
0
fjbvqlkjhv Messages postés 315 Date d'inscription   Statut Membre Dernière intervention   27
 
Pourtant si...
A mon avis ton input.next() te renvoi un code de caractère plutot.
Essai avec un "reponse.toString()"
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   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
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Quel est le type de "input" sur lequel tu fais un "next" ?
0
omar_k Messages postés 49 Date d'inscription   Statut Membre Dernière intervention  
 
clavier .le switch prend en charge ce que l'utilisateur tape au clavier
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   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
omar_k Messages postés 49 Date d'inscription   Statut Membre Dernière intervention  
 
c'est ce que j'ai fait la declaration du scanner est en haut du code j'ai oublié de la mentionner .
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   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
omar_k Messages postés 49 Date d'inscription   Statut Membre Dernière intervention  
 
que dois-je faire ?
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   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