Kann nicht String in Integer in Java umwandeln [Duplikat]
-
29-09-2019 - |
Frage
Diese Frage bereits eine Antwort hier:
Ich habe eine Funktion zu konvertieren Zeichenfolge geschrieben integer
if ( data != null )
{
int theValue = Integer.parseInt( data.trim(), 16 );
return theValue;
}
else
return null;
Ich habe eine Zeichenfolge, die 6042076399 ist und es gab mir Fehler:
Exception in thread "main" java.lang.NumberFormatException: For input string: "6042076399"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:461)
Ist dies nicht der richtige Weg zu konvertieren Zeichenfolge integer?
Lösung
Hier ist die Art, wie ich es vorziehen, es zu tun:
Edit (2015.08.04):
Wie bereits erwähnt in dem Kommentar unten, dies ist eigentlich besser, wie dies geschehen:
String numStr = "123";
int num = Integer.parseInt(numStr);
Andere Tipps
Ein Integer
kann diesen Wert nicht halten. 6042076399 (413424640921 dezimal) größer als 2147483647, die maximal eine ganze Zahl halten kann.
Versuchen Long.parseLong
verwendet wird.
Das ist die richtige Methode, aber Ihr Wert ist größer als die maximale Größe eines int
.
Die maximale Größe kann ein int
HOLD 2 31 - 1 ist, oder 2,147,483,647. Ihr Wert ist 6042076399. Sie sollten speichern es als long
aussehen, wenn Sie eine primitive Art wollen. Der Maximalwert eines langen wesentlich größer - 2 63 - 1. könnte andere Option BigInteger
.
Dieser String größer als Integer.MAX_VALUE. Sie können nicht Parse etwas, das von ganzen Zahlen des zulässigen Bereichs aus. (Sie gehen bis zu 2 ^ 31-1, glaube ich).
Zusätzlich zu dem, was die andere beantwortet, wenn Sie eine Zeichenfolge von mehr als 8 hexadezimalen Ziffern (aber bis zu 16 hexadezimalen Ziffern), können Sie es auf eine langen Verwendung Long.parseLong()
konvertieren, anstatt in einem int Integer.parseInt()
verwendet wird.