# String index out of range Fehlermeldung



## IFapToCode (26. Feb 2017)

Hey, ich wollte als Übung ein kleines Programm in Java schreiben, bei dem man eine beliebige Zeichenfolge eingibt, und dann geprüft wird, wie oft ein e, a, i, o und u darin vorkommt. Allerdings bekomme ich eine Fehlermeldung bei der ich nicht verstehe, was damit gemeint ist.
(Wenn ich in Zeile 17 statt dem i eine Zahl eingebe funktioniert es)


```
package uebung07;

import javax.swing.JOptionPane;

public class Vokalzaehler {
    public static void main(String[] args) {
        String eingabe = JOptionPane.showInputDialog("");
        eingabe = eingabe.toLowerCase();
        int i = 1;
        int einLen = eingabe.length();
        int zaehlerE = 0;
        int zaehlerA = 0;
        int zaehlerI = 0;
        int zaehlerO = 0;
        int zaehlerU = 0;
        while (i <= einLen) {
            switch (eingabe.charAt(i)) {
            case 'e': zaehlerE++;
            case 'a': zaehlerA++;
            case 'i': zaehlerI++;
            case 'o': zaehlerO++;
            case 'u': zaehlerU++;
            }
            i++;
        }
        System.out.println("e: " + zaehlerE);
        System.out.println("e: " + zaehlerA);
        System.out.println("e: " + zaehlerI);
        System.out.println("e: " + zaehlerO);
        System.out.println("e: " + zaehlerU);
    }
}
```
Fehlermeldung:


> Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 9
> at java.lang.String.charAt(Unknown Source)
> at uebung07.Vokalzaehler.main(Vokalzaehler.java:17)


----------



## JStein52 (26. Feb 2017)

Probier mal so:

```
while (i < einLen) {
```

Indizes gehen bei Java (Strings, arrays etc.) immer von 0 ... länge-1

Edit: Ach so, und i muss natürlich bei 0 beginnen.


----------



## IFapToCode (26. Feb 2017)

JStein52 hat gesagt.:


> Probier mal so:
> 
> ```
> while (i < einLen) {
> ...


Danke für die schnelle Atnwort. Jetzt funktioniert es


----------



## JStein52 (26. Feb 2017)

IFapToCode hat gesagt.:


> Jetzt funktioniert es


Tut es das wirklich ? Ich würde sagen er zählt noch falsch weil du in jedem case noch ein break einbauen musst. Sonst zählt er ja bei erkanntem 'e' z.B. auch alle anderen Zähler gleich mit hoch !


----------



## IFapToCode (26. Feb 2017)

JStein52 hat gesagt.:


> Tut es das wirklich ? Ich würde sagen er zählt noch falsch weil du in jedem case noch ein break einbauen musst. Sonst zählt er ja bei erkanntem 'e' z.B. auch alle anderen Zähler gleich mit hoch !


Ja ich habe ein Paar Sachen noch verändert (z.B. das mit dem break), aber dann gings.


----------

