ich überarbeite ein Java- Programm unter eclipse und bekomme einen java.lang.NumberFormatException Fehler.Der Fehler wird von der Funktion Long.valueOf(string) zurückgegeben, der String enthält den Wert "1415670_at". Warum kann hier keine Umwandlung durchgeführt werden? Liegt das an dem Unterstrich?
naja ich würde das nicht als gültige Zahl werten aber es funktioniert doch scheinbar.
Ausserdem, deswegen frage ich j a hier, weil ich da nicht so firm bin: ich dachte die Funktion nimmt einen String, bestimmt den numerischen Wert der Charakter und wandelt die Character in zahlen um. Offensichtlich ist dem aber nicht so...
Es funktioniert offensichtlich nicht.
Wie kommst du darauf, das es "scheinbar" funktioniert???
ich dachte die Funktion nimmt einen String, bestimmt den numerischen Wert der Charakter und wandelt die Character in zahlen um. Offensichtlich ist dem aber nicht so...
ich dachte die Funktion nimmt einen String, bestimmt den numerischen Wert der Charakter und wandelt die Character in zahlen um. Offensichtlich ist dem aber nicht so...
Stimmt, dem ist nicht so. Die Funktion ist so etwas wie die Umkehrung von Long#toString; aus dem String "12345" wird der long-Wert 12345 gemacht. Wenn der String nicht nur aus Ziffern besteht, leer ist oder zu lang, dann kommt die NumberFormatException.
habe ich mir ja durchgelesen. Und da es direkt danach die Funktion valueOf( long l) gibt, die doch scheinbar einen long-Wert zurück und die eingabe ist ein Long-Wert. Daher bin ich davonb ausgegangen, das bei Long valueOf(String s) ein character string in einen long umgewandelt wird.
Daß es funktioniert weiß ich aus folgendem:
Das Programm funktioniert für bestimmte Dateien, mit String-Identifiern, die "AX748260" gleichen, einwandfrei. Sobald ich Identifier habe, wie "1415670_at" tritt der Fehler auf. Auch für die "AFFX-r2-Bs-phe-M_at" ähnlichen Varianten hat er mit bisher keinen Fehler ausgespuckt ....
hmm ... na schön, dann stehe ich scheinbar vor einem größeren Debugging-Problem als gedacht .... der Haken ist leider, daß der ganze Code ursprünglich nicht von mir kommt und ich daher momentan leider auch erst ein wenig darin einsteigen mus ...
Umgekehrt: die Methode bekommt einen long-Wert (also den primitive type) und liefert einen Long-Wert (also den wrapper type) zurück. Mit der String-Repäsentation hat das nichts zu tun.
Anonymous hat gesagt.:
Daß es funktioniert weiß ich aus folgendem:
Das Programm funktioniert für bestimmte Dateien, mit String-Identifiern, die "AX748260" gleichen, einwandfrei. Sobald ich Identifier habe, wie "1415670_at" tritt der Fehler auf. Auch für die "AFFX-r2-Bs-phe-M_at" ähnlichen Varianten hat er mit bisher keinen Fehler ausgespuckt ....
ok ... dann muss ich wohl einfach noch mal in ruhe etwas länger grübeln und den Code untersuchen. Auf jedenfall hat sich damit dank Euch für mich ja erstmal ein deutlich besseres Bild abgezeichnet. Danke Leute!!!
ähmmm ja, also dann habe ich dahingehend gleich noch eine Frage:
java.lang.String.equals(Object anObject) scheint als eingabe nun auch einen Zahlenwert in Form eines Strings vorrauszusetzen oder wie? Wie prüfe ich denn z.B. ob mein String s gleich "P" ist?