java String verkürzen gibt fehlermeldung

Ghostryder

Lieutnant
Mitglied seit
26.12.2002
Beiträge
99
Renomée
0
Standort
bei Soest
Hallo,
ich habe einen String den ich im Konstruktor zuweise usw. Nun muss ich diesen String veränder was mit sich führt, dass es weniger Zeichen werden. Das Problem ist aber, dass bei veränderter Zeichenzahl im String der Fehler .StringIndexOutOfBoundsException auftritt! Wie kann ich dies verhindern ? Hier die Zeile wobei i und abbruchSatz im Bereich vom this.satz liegen ! :

this.satz = this.satz.substring(i, abbruchSatz);
 
Kann es sein, dass Du Dich da um einen verzählst?

Schau Dir mal die Beispiele in der J2SE-API an...
Code:
 "hamburger".substring(4, 8 ) returns "urge"
 "smiles".substring(1, 5) returns "mile"
Mach doch davor mal ne Ausgabe von dem String, i und abbruchSatz und schau mal nach ;)
 
nein da liegt leider nicht das Problem. wenn ich es auf eine neue Variable schreibe klappt alles super nur sobalt ich diese Variable dann wieder auf die this.satz schreibe um denn ursprünglichen String zu verändern kommt dieser fehler
 
Kannst Du mal die entsprechenden Code-Schnipsel posten?

Oder meinst Du das etwa so

wenn Du
Code:
String bla = this.satz.substring(0,1); this.satz = bla;
schreibst, geht es, aber beim direkten Schreiben von this.satz kommt der Fehler?

Wenn das der Fall ist - welches SDK verwendest Du?
Ich habe das mal ausprobiert und da läuft es ohne Probleme...
 
Zuletzt bearbeitet:
ja genau dann kommt der Fehler! Was auch Merkwürdig ist, ist das dies nur passiert , wenn der String verkürzt wird. Damit meine ich wenn ich soetwas mache, dass der String nacher genausoviele Zeichen enthällt wie vorher funktioniert alles ohne Probleme :

String bla = this.satz.substring(0,1); this.satz = " " + bla;

Das sdk hat die Version 1.4.2_04 ich kann die Version auch nicht ändern da es die Vorgaben des Professors sind :(
 
poste doch mal etwas mehr von dem code.
z.B. wie die länge des neuen Strings berechnet wird oder sowas.
 
ich vermute das java den neuen substring per charweiser kopie erzeugt.

substring wird wohl als erstes den ziel string auf die richtige länge bringen, damit zerstört es dir dann deine ausgangsstring, deswegen wohl dann die index out of bounds fehler.
 
Das hatten wir gerade an der Uni :) Strings sind unveränderbar und substring liefert einen neuen String zurück. Willst du den eigentlich String direkt verändern, musst du einen StringBuffer benutzen.
 
Also ich habe mal folgenden kurzen Schnipsel ausprobiert und bei mir gibt es keinen Fehler, weder unter 1.4.2.06, noch unter 1.5.0.01
Code:
public class StringTest {

        private String a;

        public static void main(String[] arg) {

                StringTest st = new StringTest();

                st.a = "123456";
                st.a = st.a.substring(1,3);
                System.out.println(st.a);
        }

}
Ausgabe:
Code:
23

Stimmt das ungefähr mit dem überein, wo bei Dir der Fehler kommt?
 
ja, nur das bei mir der String aus einer anderen Klasse kam und ich in dann im Konstruktor auf eine Variabel geschrieben habe
 
Zurück
Oben Unten