Problème de "codage" avec switch , help (JAVA)

repkiller Messages postés 2 Date d'inscription lundi 27 septembre 2010 Statut Membre Dernière intervention 6 juin 2011 - 5 juin 2011 à 19:02
repkiller Messages postés 2 Date d'inscription lundi 27 septembre 2010 Statut Membre Dernière intervention 6 juin 2011 - 6 juin 2011 à 16:32
Bonjour tous le monde,
voila j'essaye de faire une code JAVA pour coder des lignes de textes en d'autres caractères (c'est pour me divertir..).
J'ai réussi a faire une ébauche mais quand je teste le programme, il ma code les lignes de texte et me met directement après un message d'erreur :

Le message d'erreur :

"Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 9
at java.lang.String.charAt(Unknown Source)
at X2Code.CodageX2Pass.Codage(CodageX2Pass.java:15)
at X2Code.CodageX2Pass.main(CodageX2Pass.java:74)"

Je ne comprend pas, pouvez vous m'aider :s


Voici le code :

import java.util.*;
public class CodageX2Pass {
public static void Codage() {

Scanner lectureClavier = new Scanner (System.in);

String texte = "";
texte = lectureClavier.next();
int L = texte.length();

for (int i=0; i<=L;i++) {
char a;
a = texte.charAt(i);
switch (a) {
case 'a' : System.out.println("¤");
break;
case 'b' : System.out.println(")");
break;
case 'c' : System.out.println("#");
break;
case 'd' : System.out.print("&");
break;
case 'e' : System.out.print("²");
break;
case 'f' : System.out.print("£");
break;
case 'g' : System.out.print("@");
break;
case 'h' : System.out.print("§");
break;
case 'i' : System.out.print("?");
break;
case 'j' : System.out.print("|");
break;
case 'k' : System.out.print("]");
break;
case 'l' : System.out.print("!");
break;
case 'm' : System.out.print("~");
break;
case 'n' : System.out.print("*");
break;
case 'o' : System.out.print("<");
break;
case 'p' : System.out.print(">");
break;
case 'q' : System.out.print("°");
break;
case 'r' : System.out.print("{");
break;
case 's' : System.out.print(":");
break;
case 't' : System.out.print("/");
break;
case 'u' : System.out.print("µ");
break;
case 'v' : System.out.print("¨");
break;
case 'w' : System.out.print("+");
break;
case 'x' : System.out.print("%");
break;
case 'y' : System.out.print("=");
break;
case 'z' : System.out.print("$");
}
}
}
public static void main (String [] argz) {
Codage() ;
}
}

Merci de votre aide!

2 réponses

Utilisateur anonyme
5 juin 2011 à 20:02
Salut,

Erreur classique !!!

Si le texte entré a une longueur de 10 par exemple; nous devons l'examiner de 0 à 9 (10 caractères) et non de 0 à 10 (11 caractères)...

for (int i=0; i<L;i++) { 


Cordialement,

...\ Dan /...
0
repkiller Messages postés 2 Date d'inscription lundi 27 septembre 2010 Statut Membre Dernière intervention 6 juin 2011
6 juin 2011 à 16:32
Merci beaucoup Dam ! c'était exactement le problème..sa fonctionne parfaitement a présent.
0
Rejoignez-nous