Buchstaben in einem String vertauschen (Ohne replace)

Funktionierdochmal

Bekanntes Mitglied
Java:
    public static String vertauschen(String text, char tauschPartner1,
        char tauschPartner2) {
        String umgedrehterText = text;
        for (int i = 0; i < umgedrehterText.length(); i++) {
            if (tauschPartner1 == umgedrehterText.charAt(i)) {
                //HIER umgedrehterText.charAt(i) = tauschPartner2;
            } else if (tauschPartner2 == umgedrehterText.charAt(i)) {
                // HIER umgedrehterText.charAt(i) = tauschPartner1;
            }
        }
       
        return umgedrehterText;
       
    }

}

Hi, bei (siehe /HIER) wird mir der Fehler ausgegeben, dass ich die linke Seite mit einer Variable beschreiben soll. Habe ich aber meines Erachtens doch gemacht(?).
Alles was ich mache, ist doch , dass falls der Buchstabe 'a' (also tauschPartner1) an der jeweilige Stelle zu finden ist, dass an dieser Stelle ein anderer Buchstabe (tauschPartner2) eingefügt wird. Was mache ich falsch?
 
In welchem Universum bzw. welcher Programmiersprache ist der Ausdruck `umgedrehterText.charAt(i)` denn bitte eine Variable? Du sollst einer Variablen etwas zuweisen. Der Ausdruck `umgedrehterText.charAt(i)` ist keine Variable.
 
Ja ok, aber bei dieser Variante kann ich die Stelle aber nicht ersetzen:
Java:
    public static String vertauschen(String text, char tauschPartner1,
        char tauschPartner2) {
        String umgedrehterText = "";
        for (int i = 0; i < text.length(); i++) {
            umgedrehterText += text.charAt(i);
            if (tauschPartner1 == text.charAt(i)) {
                umgedrehterText += tauschPartner2;
            } else if (tauschPartner2 == text.charAt(i)) {
                umgedrehterText += tauschPartner1;
            }
        }
       
        return umgedrehterText;
       
    }

Da kommt dann sowas raus:

Geben Sie ein Wort/einen Text ein:
hallo
Ihr Wort/Text rückwärts geschrieben:
ollah
ollaeh


Heisst ich müsste das 'a' oder 'e' irgendwie löschen...
 
Was soll diese Methode eigentlich ganz genau tun? Du schreibst, dass bei irgendeiner Eingabe (deren Code man nicht sieht) irgendeine Ausgabe in umgekehrter Reihenfolge ausgegeben wird. Die Methode kehrt den String aber gar nicht um. Wo passiert hier also was genau? Wieso wird hier plötzlich irgendetwas rückwärts/umgekehrt ausgegeben?
 
Java:
import java.util.Scanner;

public class Hauptprogramm {

    public static void main(String[] args) {
        Scanner scanner = new Scanner (System.in);
        System.out.println("Geben Sie ein Wort/einen Text ein: ");
        String text = scanner.nextLine();
       
        System.out.println("Ihr Wort/Text rückwärts geschrieben: ");
        String rueckwaerts = "";
        for (int i = text.length() - 1; i >= 0; i--) {
            rueckwaerts += text.charAt(i);
        }
       
        System.out.println(rueckwaerts);
       
       
       
        char tauschPartner1 = 'a';
        char tauschPartner2 = 'e';
       
        String buchstabenVertauscht = vertauschen(rueckwaerts, tauschPartner1,
            tauschPartner2);
       
        System.out.println(buchstabenVertauscht);
       
       
       
       
       
       
       
       
       
       
        scanner.close();
       
    }

    public static String vertauschen(String text, char tauschPartner1,
        char tauschPartner2) {
        String umgedrehterText = "";
        for (int i = 0; i < text.length(); i++) {
            umgedrehterText += text.charAt(i);
            if (tauschPartner1 == text.charAt(i)) {
                umgedrehterText += tauschPartner2;
            } else if (tauschPartner2 == text.charAt(i)) {
                umgedrehterText += tauschPartner1;
            }
        }
       
        return umgedrehterText;
       
    }

}
im Hauptprogramm wird bereits vertauscht. in der Methode vertauschen gehts nur um die einzelnen Buchstaben a und e.
 
Java:
public class Ersetzen {
  public static String bidirectionalReplace(
      String text, int c1, int c2) {
    return text
        .codePoints()
        .map(c -> c == c1 ? c2 : c == c2 ? c1 : c)
        .collect(StringBuilder::new,
                 StringBuilder::appendCodePoint,
                 StringBuilder::append)
        .toString();
  }
  public static void main(String[] args) {
    System.out.println(bidirectionalReplace("abcba", 'a', 'c'));
  }
}
 
hier etwas rudimentärer

Java:
public static String vertauschen(String text, char tauschPartner1,char tauschPartner2) {
        String vertauschterText = "";
       
        for (int i = 0; i < text.length(); i++) {
            if (text.charAt(i)==tauschPartner1) {
                vertauschterText += tauschPartner2;
            } else if (text.charAt(i)==tauschPartner2)  {
                vertauschterText += tauschPartner1;
            } else {
                vertauschterText += text.charAt(i);
            }
        }
        return vertauschterText; 
    }
 

Zurück
Oben