webentwicklung-frage-antwort-db.com.de

Ausnahme für Arrayindex außerhalb der Grenzen (Java)

Hier ist mein 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;
    }
}

Der Zweck des Programms besteht darin, den Benutzer nach einer Zeichenfolge zu fragen und dann zu zählen, wie oft jedes Zeichen in der Zeichenfolge verwendet wird. 

Wenn ich das Programm kompiliere, funktioniert es gut. Wenn ich das Programm starte, kann ich eine Zeichenfolge in das Popup-Feld eingeben, aber nachdem ich die Zeichenfolge übergeben und OK gedrückt habe, erhalte ich eine Fehlermeldung 

Exception in thread "main" Java.lang.ArrayIndexOutOfBoundsException: 26
at countChar.main(countChar.Java:14)

Ich bin nicht ganz sicher, was das Problem ist oder wie ich es beheben kann.

6
Boxasauras
for ( i = 0; i < total.length; i++ );
                                    ^-- remove the semi-colon here

Mit diesem Semikolon führt die Schleife eine Schleife aus, bis i == total.length nichts tut, und dann wird ausgeführt, was Sie für den Körper der Schleife hielten.

15
JB Nizet
for ( i = 0; i < total.length; i++ ); // remove this
{
    if (total[i]!=0)
        System.out.println( "Letter" + (char)( 'a' + i) + " count =" + total[i]);
}

Die for-Schleife durchläuft bis i=26 (wobei 26 total.length ist), und dann wird Ihre if ausgeführt, wobei die Grenzen des Arrays überschritten werden. Entfernen Sie den ; am Ende der for-Schleife.

Dies ist ein sehr gutes Beispiel für die Minuslänge eines Arrays in Java. Ich gebe hier beide Beispiele

 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;  
}

dies oben ist i <arrayOFInt.length; Sie müssen nicht eins nach Länge des Arrays abziehen; aber wenn Sie i <= arrayOFInt.length -1; Es ist notwendig, andere weise arrayOutOfIndexException Occur, hoffentlich wird dies Ihnen helfen. 

0
Ayaz Akbar

Sie sollten dies entfernen

for (i = 0; i < total.length; i++);
0
El Viruz Exe