Alguém pode me dizer onde está o erro e como corrigi-lo? Sei que o erro está, provavelmente, nos If’s, porém está compilando direitinho, o problema é na execução do programa. Desde já, obrigado!
OBS: Não importa o tamanho da frase ou quantos caracteres são digitados, sempre ocorre este erro. A única diferença é o número que aparece após os dois pontos em " String index out of range: " que é o número de caracteres que a frase contém.
Aqui vai a parte do meu algoritmo:
int nroCaracteres = frase.length();
char primeiroCaracter = frase.charAt(0);
int andador = 0;
System.out.println ("A frase possui: "+nroCaracteres+ " caracteres." );
int cont1 =0;
int cont2 =0;
int cont3 =0;
while(andador<=nroCaracteres)
{
if (frase.charAt(andador)=='Q'|| frase.charAt(andador)=='W' || frase.charAt(andador)== 'E' ||frase.charAt(andador)=='R'||
frase.charAt(andador)=='T'||frase.charAt(andador)=='Y' ||frase.charAt(andador)=='U'|| frase.charAt(andador)=='I'||
frase.charAt(andador)=='O' || frase.charAt(andador)=='P')
{
cont1++;
}
if (frase.charAt(andador)=='A'|| frase.charAt(andador)=='S' || frase.charAt(andador)=='D' || frase.charAt(andador)=='F'||
frase.charAt(andador)=='G'|| frase.charAt(andador)=='H' || frase.charAt(andador)=='J'||
frase.charAt(andador)=='K'|| frase.charAt(andador)=='L')
{
cont2++;
}
if (frase.charAt(andador)=='Z'|| frase.charAt(andador)=='X' || frase.charAt(andador)=='C' || frase.charAt(andador)=='V'||
frase.charAt(andador)== 'B' ||frase.charAt(andador)=='N' ||frase.charAt(andador)=='M')
{
cont3++;
}
andador++;
}
E A MENSAGEM DE ERRO : java.lang.StringIndexOutOfBoundsException: String index out of range: 17
at java.lang.String.charAt(String.java:646)
at Avaliacao2.main(Avaliacao2.java:33)