Anzeige

 Vokallöscher

#1
PHP:
String eingabe;
       
       
       
        eingabe = JOptionPane.showInputDialog("Geben Sie einen Satz ein:");
       
        int i = eingabe.length();
       
        StringBuilder str = new StringBuilder(eingabe);
       
        while (i > 0) {
           
            if(eingabe.charAt(i) == 'a') {
                str.deleteCharAt(i);
            }
           
            if(eingabe.charAt(i) == 'e') {
                str.deleteCharAt(i);
            }
           
            if(eingabe.charAt(i) == 'i') {
                str.deleteCharAt(i);
            }
           
            if(eingabe.charAt(i) == 'o') {
                str.deleteCharAt(i);
            }
           
            if(eingabe.charAt(i) == 'u') {
                str.deleteCharAt(i);
            }
           
            i++;
        }
       
        System.out.println(str);
Es soll einen String einlesen, alle Vokale löschen und dann den String ausgeben. Jedoch erhalte ich nach Eingabe (es wurden 2 Zeichen eingegeben) immer die Fehlermeldung:

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 2
at java.lang.String.charAt(Unknown Source)
at uebung07.Vokalloescher.main(Vokalloescher.java:21)

Kann da zufällig jemand helfen?
 

zerix

Hausmeister
Moderator
#2
Hallo,

bei solchen Fehlern kann man sich eigentlich selbst helfen. ;)
Was sagt diese Fehlermeldung denn aus? Mal übersetzt: String Index außerhalb des Bereichs.
Das passiert in Zeile 21: at uebung07.Vokalloescher.main(Vokalloescher.java:21)

Das wird wohl bei dir diese Zeile sein
Code:
if(eingabe.charAt(i) == 'a') {
Da du hier auf einen Character zugreifst und das im Index i wird wohl i den Wert 2 haben und der String den du eingegeben hast 2 Zeichen lang sein. Da bei Java der erste Index eines Arrays 0 ist, wird der Index 2 die dritte Stelle sein.

Ich hoffe das hilft dir erstmal den Fehler vielleicht doch selbst zu finden. ;)

Grundsätzlich sollte man sich die Fehlermeldung mal genauer anschauen, vielleicht versteht man ja aus der Message was der Fehler ist und wenn man sich die Zeile ansieht, kann man vielleicht sehen was der Fehler ist.

Viele Grüße
Sascha
 
Anzeige
Anzeige