[Erledigt]Fehler beim löschen von einzelnen Buchstaben aus StringBuilder

richardxyx

Neues Mitglied
Hallo,
ich (Anfänger) habe die Aufgabe, alle Buchstaben 'a' aus einem String zu löschen. Dafür bin ich wie folgt vorgegangen:

Java:
import javax.swing.JOptionPane;

public class Vokalloescher {
    public static void main(String args[]) {
	String eingabe = JOptionPane.showInputDialog("Bitte geben sie den zu bearbeitenden String ein:");
	eingabe.toLowerCase(); //wandelt den zur leichteren Überprüfung String in Kleinbuchstaben um
	StringBuilder bearb = new StringBuilder(eingabe); //erstellt einen StringBuilder mit gleichem Inhalt zur Bearbeitung
	int counter = 0;
		
	while(counter <= eingabe.length()) { //überprüft, ob das Ende des Strings ereicht wurde
	    if(bearb.charAt(counter) == 'a') { //überprüft, ob an der Stelle "Counter" ein 'a' steht
		bearb.deleteCharAt(counter); //löscht das 'a' von der Stelle "Counter"
	    } else {
		counter ++; //erhöht den Counter
	    }
	 
	}
	
	System.out.println(bearb); //druckt den fertigen String ohne den Buchstaben 'a'
Wenn ich den Code nun ausführe, bekomme ich nach dem Eingeben des Strings folgenden Fehler:
Code:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 1
wobei die letzte Zahl der länge des Strings ohne den Buchstaben 'a' entspricht.

Dem Fehler nach heißt das, ich versuche den StringBuilder an einer ungültigen Stelle bearbeiten, aber dies passiert doch eigentlich gar nicht, oder?
 
Zuletzt bearbeitet:
Okay, ich bin soeben auf eine deutlich elegantere Lösung gestossen:

Java:
import javax.swing.JOptionPane;

public class Vokalloescher {
    public static void main(String args[]) {
	String eingabe = JOptionPane.showInputDialog("Bitte geben sie den zu bearbeitenden String ein:");
	eingabe.toLowerCase();
	StringBuilder bearb = new StringBuilder(eingabe);

        bearb.deleteCharAt(bearb.indexOf("a"));
        System.out.println(bearb);
 

Zurück
Oben