2Danke
ERLEDIGT
NEIN
NEIN
ANTWORTEN
5
5
ZUGRIFFE
491
491
EMPFEHLEN
-
Hallo,
Meine Frage ist recht kurz...
Also, ich hab ein Stringbuffer, und muss den letzten "," durch ein ""und"" ersetzen.
Das mach ich ja über replace. Es gilt ja :
Code java:1
replace(int start, int end, String str)
Geb ich dann jeweils bei start und end lastindexof(",") ein? und am Ende eben das " und " ?
Weil, ich kriege da eine StringIndexOutOfBounds Exception.
Also, hab es zB so :
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
public void actionPerformed(ActionEvent arg0) { StringBuffer auswahl = new StringBuffer(); StringBuffer groe = new StringBuffer(); double preis = 0; for (int i = 0; i < checkb.length; i++) { if(checkb[i].isSelected()) { auswahl.append(checkb[i].getText()); auswahl.append(", "); preis = preis + ppz; } } int ende = auswahl.length(); for (int i = 0; i < radiob.length; i++) { if(radiob[i].isSelected()) { groe.append(radiob[i].getText()); if (radiob[i].getText() == "klein") { preis += grundpreise[0]; } else if (radiob[i].getText() == "normal") { preis += grundpreise[1]; } else if (radiob[i].getText() == "groß") { preis += grundpreise[2]; } } } auswahl.deleteCharAt(auswahl.lastIndexOf(",")); auswahl.replace(auswahl.lastIndexOf(","), auswahl.lastIndexOf(","), " und "); String preistostr = String.valueOf(preis); bestelltext.setText("Sie haben eine Pizza der Größe \""+groe.toString()+"\" mit K\u00e4se, Tomaten, "+auswahl.toString()+"bestellt. Der Preis beträgt "+ preistostr + "€. Vielen Dank.");
Wenn ich hier aber nur eine Sache auswähle, dann krieg ich eben die Exception
Danke erstmal im voraus!
-
Könntest du vielleicht mal die Exception komplett posten, das würde ein paar mehr Infos geben was genau schief geht und vorallem wo etwas schief geht.
Die StringIndexOutOfBoundsException hört sich aber fast danach an dass nach dem ersten Delete kein Komma mehr gefunden wird und die funktion lastIndexOf() ein -1 zurückgibt was danach natürlich zu einem Fehler führt.
Eine Möglichkeit ein solchen Fehler zu vermeiten wäre das vorherige Prüfen ob noch ein Komma vorhanden ist:
Es mag zwar auch elegentar gehen aber für den Anfang tut das auch.Code java:1 2 3 4 5 6 7 8
int pos = auswahl.lastIndexOf(","); if(pos != -1) { auswahl.deleteCharAt(pos); } pos = auswahl.lastIndexOf(","); if(pos != -1) { auswahl.replace(pos, pos, " und "); }
-
Jo, ich krieg -1, also :
Exception in thread "AWT-EventQueue-0" java.lang.StringIndexOutOfBoundsException: String index out of range: -1
An Zeile :
auswahl.replace(auswahl.lastIndexOf(","), auswahl.lastIndexOf(","), " und ");
Ich werd dein Teil dort mal probieren und gucken ob es klappt. Dankeschön
-
hier noch die Antwort auf deine PN
Falls du nur eine Zutat ausgewählt hast und willst doch noch ein "und" dann könntest du das obere Beispiel wie folgt erweitern:
Code java:1 2 3 4 5 6
pos = auswahl.lastIndexOf(","); if(pos != -1) { auswahl.replace(pos, pos, " und "); // falls ein Komma da ist, tauschen } else { auswahl.insert(0, " und "); // wenn kein Komma da ist, am Anfang einfügen }
-
hallo, super, danke! Hat geklappt!
-
18.11.10 08:28 #6
- Registriert seit
- Aug 2005
- Ort
- Karlsruhe (Baden-Württemberg)
- Beiträge
- 905
Mir fallen eher andere Ungereimtheiten in deinem Code auf.
1.
if (radiob[i].getText() == "klein")
Hier vergleichst du Strings mit "==" das ist falsch. Damit vergleichst du, ob es die gleiche String Instanz ist und nicht ob der Inhalt gleich ist. Dafür benutzt man bei Objekten equals. Bei String kann es gleich sein, muss es aber nicht.(Stichwort Stringpool)
2.
Warum verwendest du einen StringBuffer und keinen StringBuilder? Wird die Klasse etwa von mehreren Threads gleichzeitig benutzt oder benutzt du noch eine ältere Java-Version?Wäre super wenn ihr euren Code in dieser Form einfügt:
[java]System.out.println("Hello World");[/java]Code java:1
System.out.println("Hello World");
Für erledigte Threads dürft ihr den "erledigt"-Button anklicken!
Über Dank freut sich jeder, der euch geholfen hat - ein Klick auf "Danke" kostet ja nicht mal was
Blog: http://javaeffective.wordpress.com/
Ähnliche Themen
-
kleine Uhr
Von general_failure im Forum WerkstattAntworten: 4Letzter Beitrag: 31.05.08, 11:50 -
Beschleunigung durch Synchronisieren bei StringBuffer?
Von takidoso im Forum JavaAntworten: 5Letzter Beitrag: 22.10.07, 12:04 -
Anwendung StringBuffer
Von _Truck_ im Forum JavaAntworten: 2Letzter Beitrag: 31.07.07, 10:59 -
Wichtige Information zu Stringbuffer je nach Java-Version
Von schnuffie im Forum JavaAntworten: 0Letzter Beitrag: 09.11.04, 10:51 -
StringBuffer an konstruktor übergeben
Von AndreG im Forum JavaAntworten: 3Letzter Beitrag: 01.03.04, 18:27





Zitieren
Login





