Löschen von Leerzeichen in einem char array ohne methoden

arhzz

Bekanntes Mitglied
Hallo zusammen!

Gegeben ist ein char Array;

Löschen sie alle Leerzeichen in diesem Array und verschieben Sie alle dahinter liegende Wörter nach links.Füllen Sie den Rest von dem Array mit Leerzeichen.

Also der Array sieht so aus

Java:
char[] text = { 'D','a','s',' ','i','s','t',' ', 'e','i','n',' ', 't','e','x','t'};

Meine Idee ist durch das char array zu gehen und jeden char zu übeprufen ob es ein Leerzeichen ist.Falls ja soll das array um 1 nach links verschoben werden falls nein weiter gehen.Nachdem alle leerzeichen gelöscht sind will ich ja dann durch den array nochmal gehen und den rest,mit leerzeichen ausfüllen.Es sieht so aus wenn ich es implementiere;


Java:
public class test {
    public static void main(String[] args) {
        
        char[] text = { 'D','a','s',' ','i','s','t',' ', 'e','i','n',' ', 't','e','x','t'};
        
        Out.println(Arrays.toString(text));
       
        for(int i = 0; i<text.length; i++) {//gehe durch das array
            if( text[i] = ' ') {//leerzeichen gefunden

             //hier bin ich mir nicht sicher wie ich jetzt das array nach links verschieben soll
                       
            }
        }//hier sollte das "schieben" fertig sein
            
            for(int j = 0; j <text.length; j++){ //gehe durch das array nochmal

              //jetzt soll ich irgendwie überprufen ob ich am ende des verschobenen array bin und den rest mit Leerzeichen füllen.
                
            Out.println(Arrays.toString(text));
    }
}

Ein bisschen hilfe wäre Super


Danke!
 
Du solltest eine IDE nutzen und dann die Warnungen und Hinweise der IDE beherzigen.... Und wenn Du Fehlermeldungen / Warnungen bekommst, dann solltest Du uns diese auch mitteilen - dann müssen wir nicht selbst diese suchen.

Java:
 if( text[i] = ' ')
Das wird so nicht übersetzen und die IDE sollte Dir sagen, dass dies kein Vergleich sondern eine Zuweisung ist.

Bezüglich des Ablaufs: Wie würdest Du es denn von Hand machen? Mal es Dir auf einen Zettel und gehe es einmal durch. Was für Schritte sind wie notwendig?
 
Du solltest eine IDE nutzen und dann die Warnungen und Hinweise der IDE beherzigen.... Und wenn Du Fehlermeldungen / Warnungen bekommst, dann solltest Du uns diese auch mitteilen - dann müssen wir nicht selbst diese suchen.

Java:
 if( text[i] = ' ')
Das wird so nicht übersetzen und die IDE sollte Dir sagen, dass dies kein Vergleich sondern eine Zuweisung ist.

Bezüglich des Ablaufs: Wie würdest Du es denn von Hand machen? Mal es Dir auf einen Zettel und gehe es einmal durch. Was für Schritte sind wie notwendig?
Uh das war eigentlich mein Typo,schuligung.

Na ja den Ablauf hab ich schon mehr oder weniger beschrieben.Ich wurde durch den text gehen also Wort nach Wort und wenn ich zu einem Leerzeichen komme wurde ich den Wert nach dem leerzeichen um eins nach links schieben (also den platz von dem leerzeichen).
 
Also wenn Du "abc def ghi" hast, dann würdest Du nach der Beschreibung "abcd ef ghi" erhalten? Wobei das mit dem "Schieben" zu ungenau ist... Ich habe es mal als tauschen angesehen ...

Wobei Du dann bei zwei Leerzeichen hintereinander nur zwei Leerzeichen tauschen würdest ...

Also so ganz scheint die Beschreibung nicht zum Ziel zu führen. Ich bauche eine genaue Beschreibung, die mich dazu bringt, zum Ziel zu kommen.

Und die solltest Du Dir erst einmal unabhängig von Java überlegen. Das ist dann eine Abstraktionsebene weniger was er vermutlich etwas vereinfacht für Dich.

Also überlege Dir noch einmal, wie wir zu dem gewünschten Ergebnis kommen.
 
Also wenn Du "abc def ghi" hast, dann würdest Du nach der Beschreibung "abcd ef ghi" erhalten? Wobei das mit dem "Schieben" zu ungenau ist... Ich habe es mal als tauschen angesehen ...

Wobei Du dann bei zwei Leerzeichen hintereinander nur zwei Leerzeichen tauschen würdest ...

Also so ganz scheint die Beschreibung nicht zum Ziel zu führen. Ich bauche eine genaue Beschreibung, die mich dazu bringt, zum Ziel zu kommen.

Und die solltest Du Dir erst einmal unabhängig von Java überlegen. Das ist dann eine Abstraktionsebene weniger was er vermutlich etwas vereinfacht für Dich.

Also überlege Dir noch einmal, wie wir zu dem gewünschten Ergebnis kommen.
Also zuerst soll man ja das nicht als ein String betrachten sondern als an char array;

'a','b','c',' ','d','e','f',' ','g','h','i' und das soll man raus bekommen 'a','b','c','d','e','f','g','h','i',' ',' ,' Die Leerzeichen sollen dann am ende stehen.

Ich hab nachgedacht und denk das mein Ansatz mir ein bisschen zu kompliziert ist.Ich wurde es lieber jetzt so machen;

Durch den array gehen und für jedes zeichen das nicht ein Leerzeichen ist einfach in das array "dranhangen".Die Leerzeichen am ende dann einfach einfugen.
 
Was heisst "in das array dran hangen"? Und was willst Du am Ende einfugen?

Du musst eine Beschreibung finden, die klar macht, was geht.

hast Du Dir denn einen Ablauf einmal im Detail überlegt und mit Stift und Papier durchgespielt?

Du musst Dir die Problematik und die Lösung doch erst im Detail überlegen, damit Du da etwas implementieren kannst. Keine Ahnung von einer Lösung zu haben und glauben, man könne irgend einen Code hinschreiben, der dann das gewünschte macht, ist kein zielführender Ansatz!
 
Habs gelöst;

Java:
import java.util.Arrays;


public class test {
    public static void main(String[] args) {
        char[] text = { 'D','a','s',' ','i','s','t',' ', 'e','i','n',' ', 't','e','x','t'};
        Out.println(Arrays.toString(text));
        
        int pos = 0;
        
        for(int i = 0; i<text.length; i++) {
            if(text[i] != ' ') {
                text[pos] = text[i];
                pos++;
            }
        }
        
        while(pos < text.length) {
            text[pos] = ' ';
            pos++;
        }
        Out.println(Arrays.toString(text));
    }
}
 

Zurück
Oben