Zeichenketten verwalten und bearbeiten (mit Arrays)

Diskutiere Zeichenketten verwalten und bearbeiten (mit Arrays) im Hausaufgaben Bereich.
3

3vilrine

Hallo, ich bräuchte Hilfe für folgende Aufgabe:

12677

Hier mein kläglicher Versuch das Buchstaben durch einen anderen ersetzt werden:
Java:
import java.io.IOException;

public class CharArrayProcessing {
    public static void main(String[] args) throws IOException {

        final int max = 100;
        char[] pufferArray = new char[max]; // pufferArray für Eingabespeicher in pufferArray

        System.out.println("Zeichenkette von bis zu " + max + " Zeichen eingeben und mit <return> abschliessen");

        char c;
        int counter = 0;
        for (int i = 0; i < pufferArray.length; i++) {
            c = (char) System.in.read();
            if (c == '\r' || c == '\n') {
                break;
            }
            counter++;
            pufferArray[i] = c;
        }

        char[] ausgabeArray = new char[counter]; // AusgabeArray für gekürztes Array
        for (int i = 0; i < ausgabeArray.length; i++) {
            ausgabeArray[i] = pufferArray[i];
        }
        ////////////////////////////////////////
        for (char ch : ausgabeArray) {
            System.out.print(ch); // Testausgabe (ob array gekürzt auf eingabe?)
        }
        ////////////////////////////////////////
        System.in.read();

        // Teil für Eingabeüberprüfung und Tauschen
        System.out.println("\nWelche Zeichen sollen getauscht werden ? Beispieleingabe: a->b");
        char suche = 0;
        char ersetze = 0;
        for (int i = 0; i < 4; i++) {
            char eingabe = (char) System.in.read();
            if ((eingabe >= 'a' && eingabe <= 'z') || (eingabe >= 'A' && eingabe <= 'Z') && i == 0) {
                suche = eingabe;
            } else if (eingabe == '-' && i == 1) {
            } else if (eingabe == '>' && i == 2) {
            } else if ((eingabe >= 'a' && eingabe <= 'z') || (eingabe >= 'A' && eingabe <= 'Z') && i == 3) {
                ersetze = eingabe;
            } else {
                System.out.println("Fehlerhafte Eingabe");
                break;
            }
        }
        // Tauschen von Buchstaben
        for (int count = 0; count < ausgabeArray.length; count++) {
            if (ausgabeArray[count] == suche) {
            ausgabeArray[count] = ersetze;   
            }
                
                
        }
        for (int e = 0; e < ausgabeArray.length; e++) {
            
            System.out.print(ausgabeArray[e]);
            //System.out.println(ausgabeArray.length);
            
        }
    
        
    
    }
}
Das ist die Ausgabe von der Konsole mit einem Beispiel:
12678

Er tauscht mir hier halt nicht 'a' mit 'b', sondern löscht 'b' und 'a' steht wo es vorher auch stand.
Ich komme nicht darauf wo der Fehler liegt.
Die Ausgabe sollte ja so aussehen (bei dem Beispiel): bababa ?
Und das soll für jede beliebige Eingabe des Nutzers funktionieren (für Buchstaben).
Ich wäre für jede Hilfe dankbar. mfg
 
L

LimDul

Bei deinen If Bedingungen fehlen Klammern, der Und-Operator bindet stärker als der Oder Operator.

Sprich, folgender Code ist falsch:
Code:
            if ((eingabe >= 'a' && eingabe <= 'z') || (eingabe >= 'A' && eingabe <= 'Z') && i == 0) {
Der ist äquivalent zu:
Code:
            if ((eingabe >= 'a' && eingabe <= 'z') 
            || (  (eingabe >= 'A' && eingabe <= 'Z') && i == 0)) {
Sprich, die Bedingung ist immer wahr, wenn die Eingabe im Bereich a bis z liegt. Das führt dazu, dass bei deiner Eingabe das suche durch das b überschrieben wird und das ersetze nie gesetzt wird.
 
3

3vilrine

Wow jetzt geht es. Mir ist auch noch aufgefallen das ich geschrieben habe "getauscht werden soll", das sollte eigentlich ersetzt heißen, da ich ja nichts tausche sondern Buchstaben ersetze.
So siehts jetzt zumindest aus:
12679

Danke für die schnelle Antwort @LimDul
 
Thema: 

Zeichenketten verwalten und bearbeiten (mit Arrays)

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben