Vergleiche mit charAt funktioniert bei Strings nicht, was tun?

Bitte aktiviere JavaScript!
upload_2019-2-13_17-54-58.png

Java:
    public static void main(String[] args) {
        Scanner scanner = new Scanner (System.in);
       
        String eingabeText = scanner.nextLine();
       
        String zuErsZeichen = scanner.nextLine();
       
        String eingNeueZeichen = scanner.nextLine();
       
        String veraenderterText = "";
       
        String bisher = "";
       
        for (int i = 0; i <= eingabeText.length(); i++) {
            if (eingabeText.charAt(i) == zuErsZeichen.charAt(i)) {
                bisher += eingNeueZeichen + eingabeText.substring(i+1, eingabeText.length());
               
            }
        }
        System.out.println(bisher);
        scanner.close();
    }

}
Mein bisheriger Code würde nur beim Ersetzen von einzelnen Zeichen funktionieren (ich versuche noch, es mit mehreren Zeichen hinzukriegen). Aber das Problem ist, dass ich einen Fehler bekomme wenn ich mit charAt vergleiche.
Konsole:
Hallo
a
u
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 1
at java.base/java.lang.StringLatin1.charAt(Unknown Source)
at java.base/java.lang.String.charAt(Unknown Source)
at Texttt.main(Texttt.java:19)
 
A

Anzeige


Vielleicht hilft dir dieser Kurs hier weiter: (hier klicken)
Das Problem ist aktuell, dass du in der Schleife annimmst, dass die Zeichenkette `zuErsZeichen` genauso lang ist wie der `eingabeText`, da du die Schleife über `eingabeText.length()` definierst und für jedes `i` sowohl auf `eingabeText` als auch auf `zuErsZeichen` an der Stelle `i` zugreifst.
 
Java:
        for (int i = 0; i <= eingabeText.length(); i++) {
            if (zuErsZeichen.equals(eingabeText.charAt(i))) {
                bisher += eingNeueZeichen + eingabeText.substring(i+1, eingabeText.length());
                System.out.println(bisher);
Klappt leider auch nicht
"

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 5
at java.base/java.lang.StringLatin1.charAt(Unknown Source)
at java.base/java.lang.String.charAt(Unknown Source)
at Texttt.main(Texttt.java:19)
"
ne idee?
 
Du schreibst:
Java:
if (zuErsZeichen.equals(eingabeText.charAt(i))) {
Damit es funktioniert, musst du es wie folgt schreiben:
Java:
if (zuErsZeichen.equals("" + eingabeText.charAt(i))) {
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben