wenn ich z.b. einen String habe, den ich zu einem char array umwandele. Das char array bearbeite ich und konvertiere wieder zu einem String.
Wie schaffe ich es, dass die leerzeichen trotzdem enthalten sind?
z.b.
Java:
String st ="";for(int i=0; i<args.length; i++){
st += args[i];}char[] a = st.toCharArray();//...String g =newString(a);System.out.print(g);
Es muss aber nicht sein, dass es am Ende wieder zu String umgewandelt wird. Hauptsache die leerzeichen sind enthalten.
also was auch immer dein for()-loop da machen soll ... würde ich definitiv anderst lösen ...
ansonsten : String.toCharArray() entfernt whitespaces 0x20 ? ... nicht das mir das bekannt wäre ... liegt wahrscheinlich an dem code mit dem du das char-array manipulierst ...
ist aus dem stück code da leider nicht ersichtlich
publicstaticvoidmain(String[] args){String s ="H A L L O";char[] c = s.toCharArray();String t =newString(c);System.out.println(t);// Ausgabe: H A L L O}
Gib doch einfach mal direkt nach der Schleife st auf der Konsole aus. Vermutlich wirst Du entgegen Deiner Erwartung (woher die auch immer kommt) keine Leerzeichen finden.
Ich möchte nicht das st ausgeben sondern das char array.
Ohh, sorry sorry, ich hab da was ganz wichtiges vergessen.
Vergisst bitte den ersten code: hier der neue
Java:
StringBuffer b =newStringBuffer();for(int i=0; i<args.length; i++){
b.append(args[i]);}char[] a = b.toString().toCharArray();//...String g =newString(a);System.out.print(g);
Ich hab da mal noch eine Frage. Aber möchte jetzt nicht ein neues Thema anfangen.
Wenn z.b. in einem wort wie "otto" zwei mal hintereinander der gleiche Buchstabe vorkommt wie schaffe ich es dass es nur einmal am ende ausgegeben wird: "oto"
Arrays sind starre Konstrukte. Einmal angelegt sind sie in Ihrer Aufnahmekapazität fix.
Aus einer List wäre ein Löschen möglich.
Bei einem Array könnte man die Inhalte verschieben z.B. bei
Code:
o t t o
den Inhalt von Index 2 mit dem Inhalt von Index 3 überschreiben. Allerdings wäre das Array immer noch vier Felder lang und man müsste die Inhalte z.B. per System.arraycopy(...) oder einer Schleife in ein neues char[3] kopieren.
Wenn es allerdings wie beschrieben um die Ausgabe geht recht es sich den zuletzt ausgegebenen Buchstaben zu merken und falls der darauf folgende Buchstabe gleich ist diesen einfach nicht auszugeben.
char[] a =newchar[4];
a[0]='O';
a[1]='t';
a[2]='t';
a[3]='o';for(int i =0; i < a.length; i++){if(i<a.length-1){if(a[i]!= a[i+1]){System.out.print(a[i]);}}else{System.out.print(a[i]);}}System.out.println();
lastIndexOf sucht nach dem Zeichen (" ") und zwar nach dem letzten Vorkommen
Beispiel "Ich lerne Java", hier wäre es das Leerzeichen vor "Java"!
+1 er soll ein Zeichen später anfangen, hier das "J"
Dein Problem ist deine Strings sehen so aus "Ich lerne Java ", da ist das letzte " " nach dem "Java", deshalb funktioniert es bei dir nicht. Aber am Anfang dieses Thread haben wir dich schon darauf hingewiesen, dass letzte Leerzeichen zu entfernen. Du hast in diesem Thread alles, was du brauchst.
Nein, du musst das letzte Leerzeichen entweder entfernen oder dafür sorgen, dass es gar nicht erst entsteht.
substring(startindex); --> hier wird aus einem String/StringBuffer der Teil ausgewählt ab dem startindex bis zum Ende. Das +1 steht dafür, dass das Leerzeichen nicht mit ausgewählt wird, sondern erst ein Zeichen später angefangen (+1) wird.