Java: problème de switch

Fermé
velociraptor - 29 juil. 2004 à 12:31
 Utilisateur anonyme - 30 juil. 2004 à 10:58
Bonjour,

Je suis en train de faire un programme remplaçant un caractère par une String mais j'ai un petit problème à ce niveau... Je m'explique:
Quand je fais un "a", un "A" ou une autre lettre, pas de problème mais par contre, "é", "à", "è" et tout les autres caractères accentués sont envoyés vers le "default" de mon switch ?!?

"switch" prend en compte les caractères sauf ceux qui sont accentués? je suis étonné!

Ne voulant pas rester les bras croisés devant ce problème, j'ai cherché à passer par l'intermédiaire d'un "if" et j'ai eu comme résultat qu'un caractère ne peut pas être déréférencé...

Voilà pourquoi je vous solicite! si vous pouvez m'expliquer pourquoi le witch me renvois les caractères accentués sur default, je vous en serai très reconnaisant!

je vous joins la partie du code utile:

public static void modif(String val1) throws IOException
	{
		chaine="";
		for(int i = 0; i < val1.length(); i++)
		{
			char en_cours = val1.charAt(i);
			String carac = Activation(en_cours);
			chaine+= carac;
		}
		String resultat ="resultat.txt";
		FileWriter fw = new FileWriter(resultat);
		BufferedWriter bw = new BufferedWriter(fw);
		PrintWriter fichierSortie = new PrintWriter(bw);
		fichierSortie.println(chaine);
		fichierSortie.close();
		System.out.println("Votre texte a ete modifié et se trouve dans un fichier texte!");
	}

	public static String Activation(char i) throws IOException
	{
		String j = "0";
		switch(i)
		{
			case 'é': j = "1"; break;
			case 'ç': j = "2"; break;
			case '*': j = "3"; break;
			case '+': j = "4"; break;
			case 'F': j = "5"; break;
			case 'G': j = "6"; break;
			case 'H': j = "7"; break;
			case 'I': j = "8"; break;
			case 'l': j = "9"; break;
			case 'm': j = "10"; break;
			case 'n': j = "11"; break;
			default: System.out.println("problème de caractère non référencé! fin du programme"); Au_revoir(); break;
			}
		return j;
	}


Voilà!

Je vous remercie de toute l'aide que vous pourrez m'apporter,

cordialement,

alexandre
A voir également:

3 réponses

Canard007 Messages postés 5929 Date d'inscription mercredi 26 mai 2004 Statut Contributeur Dernière intervention 18 septembre 2009 215
29 juil. 2004 à 12:45
essaye de recuperer le code ascii du caractere et de mettre les code s ascii dans ton switch comme ca tu pourra verifier que
1- si tu recupere bien le bon caractere
2- ce qui se passe lors de l'evaluation

COIN!
0
Tu n'utiliserais pas eclipse? J'ai aussi des problèmes d'accents sur eclipse, mais je ne comprends pas pourquoi!
0
Utilisateur anonyme
30 juil. 2004 à 10:58
C'est normal: pour tout caractère ne se trouvant pas dans un des 'case', le 'default" sera appliqué.

Donc, seul les caractères repris dans tes 'case' (à savoir: éç*+FGHIlmn) renverront la valeur correspondante (de 1 à 10). TOUS les autres caractères renverront '0'.

;-)
0