لا يمكن تحويل السلسلة إلى عدد صحيح في Java [مكررة

StackOverflow https://stackoverflow.com/questions/3517686

  •  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().

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top