StringBuilder

Status
Nicht offen für weitere Antworten.

Schwede

Mitglied
Ich hab folgendes Probleme und zwar möchte ich,

das meine Methode einen String liefert der alle in "par" enthaltenen Dezimalziffern
('0' bis '9') in der gleichen Reihenfolge enthält.

wie zum Beispiel: ("Euro 17 Cent 25") ist gleich "1725"

Ich hab das Programm auch fast fertig, denke ich, nur ich komm bei der if-anweisung nicht weiter, kann mir vllt jmd helfen?!?!

Der Code sieht wie folgt aus:

Code:
   static public void main(String[] sonja)
   {
	    String par="Euro 17 Cent 25";
	    StringBuilder sb=new StringBuilder(par);

	    for(int i=0;i<sb.length();i++)
	    {
		char c= sb.charAt(i);
		if(c>'9' && c<'0')
		{
		    sb.deleteCharAt(i);
		}
	    }


   }
 
S

SlaterB

Gast
> if(c>'9' && c<'0')

->

if(c>'9' || c<'0')

----

etwas speicherfreundlicher wäre noch, von hinten erst die letzten Zeichen zu löschen,
dann müssen nicht so viele verschoben werden,

aber StringBuilder statt String ist schon die entscheidene Sache, gut
 

Schwede

Mitglied
cool danke funktioniert...

bloß jetzt ist mir eins aufgefallen, und zwar wenn ich meine Methode so schreibe:

Code:
static public String blanksRaus ()
   {
	  String par="Euro 17 Cent 25";
	  StringBuilder sb=new StringBuilder(par);

	  [B][I][COLOR="Red"]for(int i=sb.length()-1;i>=0;i--)[/COLOR][/I][/B]
	  {
	  	char c= sb.charAt(i);
	  	if(c>'9' || c<'0')
	  	{
	  		sb.deleteCharAt(i);
	  	}
	  }
	  return sb.toString();
   }

dann bringt er das Ergebnis: 1725

wie ich es haben will aber wenn ich meine Methode so schreibe:

Code:
static public String blanksRaus ()
   {
	  String par="Euro 17 Cent 25";
	  StringBuilder sb=new StringBuilder(par);

	  [B][I][COLOR="red"]for(int i=0;i<sb.length();i++)[/COLOR][/I][/B]
	  {
	  	char c= sb.charAt(i);
	  	if(c>'9' || c<'0')
	  	{
	  		sb.deleteCharAt(i);
	  	}
	  }
	  return sb.toString();
   }

da bringt er mir: uo17Cn 25

WARUM???

bei der einen Methode zählt man von anfang bis ende
und bei der anderen doch nur vom ende bis zum anfang, oder täusche ich mich da?
 

faetzminator

Gesperrter Benutzer
du entfernst einen char, also musst du wieder von i abziehen, also so:
Java:
sb.deleteCharAt(i--);
 
S

SlaterB

Gast
was ist denn das für ein irrer Vorschlag?

sb.deleteCharAt(i);
den i-ten Char löschen, soweit alles klar

DANACH dann evtl. als zweiter Befehl
i--;
um für den nächsten Schleifendurchlauf i zu korrigieren,
aber um Himmels Willen doch nicht zusammengemoppelt
 

musiKk

Top Contributor
Code:
sb.deleteCharAt(i--);
und
Code:
sb.deleteCharAt(i);
i--;
bewirken doch das gleiche? Ist natürlich wie so oft Ansichtssache, was man leserlicher findet, aber bei solch kleinen Ausdrücken sehe ich kein Problem bei der ersten Methode.
Wenns um Leserlichkeit geht, sollte man eher bemängeln, dass die Laufvariable innerhalb der Schleife bedingt verändert wird...
 
S

SlaterB

Gast
ein Befehl pro Zeile hat noch niemanden geschadet, schon gar nicht in
"Java Basics - Anfänger Themen" ;)
 

musiKk

Top Contributor
Schon. Aber "irrer Vorschlag" und "um Himmels Willen doch nicht" kam mir dann doch etwas überzogen vor.
Hauptsache nicht sowas wie "x += x++ - x + --x;" oder so machen. ;)
 

SchonWiederFred

Bekanntes Mitglied
etwas speicherfreundlicher wäre noch, von hinten erst die letzten Zeichen zu löschen
Noch besser ist es, gar nichts zu löschen:
Java:
public static String filter_digits(String string)
{
	char[] result = string.toCharArray();
	int size = 0;
	for (char c : result)
		if (Character.isDigit(c)) result[size++] = c;
	return new String(result, 0, size);
}
Schöner geht's mal wieder mit Haskell ;)
Code:
> filter isDigit "Euro 17 Cent 25"
"1725"
 
Zuletzt bearbeitet:
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
sserio StringBuilder und Strings Java Basics - Anfänger-Themen 8
Kotelettklopfer Stringbuilder mit print ausgeben Java Basics - Anfänger-Themen 83
C Long value an Stringbuilder übergeben, equals Methode funktioniert nicht Java Basics - Anfänger-Themen 2
P Methode trim() ohne StringBuilder Java Basics - Anfänger-Themen 1
P Stringbuilder richtig einsetzen Java Basics - Anfänger-Themen 1
W Teilstring durch Teilstring mittels StringBuilder ersetzen Java Basics - Anfänger-Themen 7
P Schleife für insert() und delete() im StringBuilder in Verbindung mit indexOf() Java Basics - Anfänger-Themen 7
G Wozu ist die Methode offsetByCodePoints(int, int) beim StringBuilder sinnvoll? Java Basics - Anfänger-Themen 1
G Wie kann ich einem StringBuilder einen int Wert formatiert hinzufügen? Java Basics - Anfänger-Themen 8
G Gibt es eine Methode die bei einem StringBuilder n mal das Zeichen c hinzufügt? Java Basics - Anfänger-Themen 6
G StringBuilder .setLength Methode wirkungslos? Java Basics - Anfänger-Themen 2
F StringBuilder: Zeilenumbruch nach x Zeichen ohne Worttrennung Java Basics - Anfänger-Themen 1
K StringBuilder Objekt überschreiben - Speicherverbrauch Java Basics - Anfänger-Themen 3
R [Erledigt]Fehler beim löschen von einzelnen Buchstaben aus StringBuilder Java Basics - Anfänger-Themen 1
H Suche Vergleichstabelle für die Klassen String und StringBuilder Java Basics - Anfänger-Themen 1
R Frage zum StringBuilder Java Basics - Anfänger-Themen 7
F Scanner + Stringbuilder geben leeren String aus wenn Umlaute enthalten sind Java Basics - Anfänger-Themen 29
M Array erweitern ohne Stringbuilder Java Basics - Anfänger-Themen 6
E StringBuilder.delete Problem Java Basics - Anfänger-Themen 2
J StringBuilder / String zusammensetzen Java Basics - Anfänger-Themen 2
A Datentypen Stringbuilder vollständig leeren Java Basics - Anfänger-Themen 6
F Problem bei StringBuilder Methoden Java Basics - Anfänger-Themen 11
C String oder StringBuilder? Java Basics - Anfänger-Themen 13
Java-Insel StringBuilder Zeilenumbrüche erkennen Java Basics - Anfänger-Themen 3
L StringBuilder Probleme in einer Klasse Java Basics - Anfänger-Themen 4
S im StringBuilder Zeichenketten ersetzen Java Basics - Anfänger-Themen 6
J StringBuilder initialisieren und Löschbefehl Java Basics - Anfänger-Themen 20
M Gittermuster mit Stringbuilder und einfacher Schleife erstellen Java Basics - Anfänger-Themen 19
B Stringbuilder verwenden Java Basics - Anfänger-Themen 15
L StringBuilder OutOfMemoryError Java Basics - Anfänger-Themen 8
J Strings und StringBuilder Java Basics - Anfänger-Themen 12
K StringBuilder notwendig ab wann? Java Basics - Anfänger-Themen 42
H Array + StringBuilder in eine Textdatei speichern.laden. Java Basics - Anfänger-Themen 7
D StringBuilder Java Basics - Anfänger-Themen 10
N String oder StringBuffer/StringBuilder Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben