Voici mon code:
public class countChar {
public static void main(String[] args) {
int i;
String userInput = new String();
userInput = Input.getString("Please enter a sentence");
int[] total = totalChars(userInput.toLowerCase());
for (i = 0; i < total.length; i++);
{
if (total[i] != 0) {
System.out.println("Letter" + (char) ('a' + i) + " count =" + total[i]);
}
}
}
public static int[] totalChars(String userInput) {
int[] total = new int[26];
int i;
for (i = 0; i < userInput.length(); i++) {
if (Character.isLetter(userInput.charAt(i))) {
total[userInput.charAt(i) - 'a']++;
}
}
return total;
}
}
Le programme a pour but de demander à l'utilisateur une chaîne, puis de compter le nombre de fois que chaque caractère est utilisé dans la chaîne.
Quand je vais compiler le programme, cela fonctionne bien. Lorsque je lance le programme, je peux entrer une chaîne dans la boîte de dialogue, mais après avoir envoyé la chaîne et appuyé sur OK, un message d'erreur s'affiche:
Exception in thread "main" Java.lang.ArrayIndexOutOfBoundsException: 26
at countChar.main(countChar.Java:14)
Je ne suis pas complètement sûr du problème ni de la façon de le résoudre.
for ( i = 0; i < total.length; i++ );
^-- remove the semi-colon here
Avec ce point-virgule, la boucle boucle jusqu'au i == total.length
, ne fait rien, puis le corps de la boucle que vous pensiez être exécuté.
for ( i = 0; i < total.length; i++ ); // remove this
{
if (total[i]!=0)
System.out.println( "Letter" + (char)( 'a' + i) + " count =" + total[i]);
}
La boucle for boucle jusqu'au i=26
(où 26 est total.length
), puis votre if
est exécutée, en dépassant les limites du tableau. Supprimez le ;
à la fin de la boucle for
.
C'est très bon exemple de moins Longueur d'un tableau en Java, je donne ici les deux exemples
public static int linearSearchArray(){
int[] arrayOFInt = {1,7,5,55,89,1,214,78,2,0,8,2,3,4,7};
int key = 7;
int i = 0;
int count = 0;
for ( i = 0; i< arrayOFInt.length; i++){
if ( arrayOFInt[i] == key ){
System.out.println("Key Found in arrayOFInt = " + arrayOFInt[i] );
count ++;
}
}
System.out.println("this Element found the ("+ count +") number of Times");
return i;
}
ceci ci-dessus i <arrayOFInt.length; pas besoin de moins un par la longueur du tableau; mais si vous <= arrayOFInt.length -1; est nécessaire autrement sage arrayOutOfIndexException Occur, espérons que cela vous aidera.
Vous devriez enlever ceci
for (i = 0; i < total.length; i++);