Problème d'affichage
ArmandAs_1998
Messages postés
17
Statut
Membre
-
ArmandAs_1998 Messages postés 17 Statut Membre -
ArmandAs_1998 Messages postés 17 Statut Membre -
Bonjour,
J'ai besoin de déterminer un palindrome sans tenir compte des espaces/virgules/deux-points.
Je ne sais pas où se situe mon erreur ici (voir fin).
Palindrome ?TU L AS TROP ECRASE CESAR CE PORT SALUT
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 39
at java.base/java.lang.StringLatin1.charAt(StringLatin1.java:47)
at java.base/java.lang.String.charAt(String.java:693)
at TD4_ex5.main(TD4_ex5.java:28)
J'ai besoin de déterminer un palindrome sans tenir compte des espaces/virgules/deux-points.
Je ne sais pas où se situe mon erreur ici (voir fin).
public static void main(String []args) {
String ch;
Scanner s = new Scanner(System.in);
System.out.print("Palindrome ?");
ch= s.nextLine();
int i=0, j=ch.length()-1;
while (i!=j) {
while (ch.charAt(i)==' ' || ch.charAt(i)==',' || ch.charAt(i)==':')
i++;
while (ch.charAt(j)==' ' || ch.charAt(j)==',' || ch.charAt(j)==':')
j--;
if (ch.charAt(i)==ch.charAt(j)) {
i++;
j--;
if (i==j) {
System.out.println(true);
break;
}
} else {
System.out.println(false);
break;
}
}
}
Palindrome ?TU L AS TROP ECRASE CESAR CE PORT SALUT
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 39
at java.base/java.lang.StringLatin1.charAt(StringLatin1.java:47)
at java.base/java.lang.String.charAt(String.java:693)
at TD4_ex5.main(TD4_ex5.java:28)
2 réponses
-
Bonjour,
Le distributeur automatique de réponses est en panne....
Donnez-vous au moins la peine de poser une question, en faisant une phrase !
-
Bonjour,
La condition d'arrêt de ta boucle c'est de tomber sur le caractère du milieu (i == j).
Mais cela ne peut fonctionner qu'avec un nombre impair de caractères.
Or ta saisie as un nombre pair de caractères, donc il n'y a pas de caractère de milieu, du coup ta boucle ne s'arrêtes pas et ça fait n'importe quoi.