Java.lang.StringIndexOutOfBoundsException

Fermé
kevyn93 Messages postés 4 Date d'inscription mercredi 27 octobre 2010 Statut Membre Dernière intervention 25 novembre 2011 - 28 sept. 2011 à 17:01
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 28 sept. 2011 à 17:18
J'ai le code java suivant:

public class Test1 {

static final String lMaj = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
static final String lMin = "abcdefghijklmnopqrstuvwxyz";

public static void main(java.lang.String[] args) {
System.out.println(MetMaj("chaine avec MAJ et des min"));
}

public static String MetMaj(String s) {
StringBuffer sb = new StringBuffer(s);

for ( int i = 0; i < sb.length(); i++) {


int index = lMin.indexOf(sb.charAt(i));

System.out.println(index+"=======> "+sb.charAt(i));

if (index <=0 ){
if(sb.charAt(i) != ' '){
sb.setCharAt(i,lMaj.charAt(index));
}
else{
sb.setCharAt(i,' ');
}
}
}

return sb.toString();
}
}

qui me donne l'exception : Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -1

Quelqu'un peut m'expliquer où je me suis trompé

Merci

1 réponse

KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
28 sept. 2011 à 17:18
if (index <=0)
{ 
    if(sb.charAt(i) != ' ')
    { 
        sb.setCharAt(i,lMaj.charAt(index));

chatAt te renvoit une StringIndexOutOfBoundsException car tu utilises un idex négatif.
Remarque : ton index est égal à -1 lorsque lMin.indexOf ne trouve pas sb.charAt(i)
0