لا يمكن تحويل السلسلة إلى عدد صحيح في Java [مكررة
-
29-09-2019 - |
سؤال
هذا السؤال لديه بالفعل إجابة هنا:
لقد كتبت وظيفة لتحويل السلسلة إلى عدد صحيح
if ( data != null )
{
int theValue = Integer.parseInt( data.trim(), 16 );
return theValue;
}
else
return null;
لديّ سلسلة هي 6042076399 وأعطاني أخطاء:
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)
أليس هذه هي الطريقة الصحيحة لتحويل السلسلة إلى عدد صحيح؟
المحلول
ها هي الطريقة التي أفضل أن أفعلها:
تحرير (08/04/2015):
كما هو مذكور في التعليق أدناه ، من الأفضل أن يتم ذلك في الواقع مثل هذا:
String numStr = "123";
int num = Integer.parseInt(numStr);
نصائح أخرى
و Integer
لا يمكن الاحتفاظ بهذه القيمة. 6042076399 (413424640921 في عشري) أكبر من 2147483647 ، وهو الحد الأقصى الذي يمكن أن يحمله عدد صحيح.
جرب استخدام Long.parseLong
.
هذه هي الطريقة الصحيحة ، لكن قيمتك أكبر من الحد الأقصى لحجم int
.
الحد الأقصى للحجم int
يمكن أن عقد 231 - 1 ، أو 2،147،483،647. قيمتك 6،042،076،399. يجب أن تنظر إلى تخزينها ك long
إذا كنت تريد نوع بدائي. الحد الأقصى لقيمة الطول أكبر بكثير - 263 - 1. قد يكون هناك خيار آخر BigInteger
.
هذه السلسلة أكبر من integer.max_value. لا يمكنك تحليل شيء خارج نطاق الأعداد الصحيحة. (يرتفعون إلى 2^31-1 ، على ما أعتقد).
بالإضافة إلى ما أجابه الآخرون ، إذا كان لديك سلسلة من أكثر من 8 أرقام سداسية عشرية (ولكن ما يصل إلى 16 رقمًا سداسيًا) ، فيمكنك تحويله إلى فترة طويلة باستخدام Long.parseLong()
بدلا من int باستخدام Integer.parseInt()
.