【问题标题】:Java parse error when converting "9632580147" to int将“9632580147”转换为 int 时出现 Java 解析错误
【发布时间】:2013-11-05 18:40:38
【问题描述】:

在我的 java 代码中,我有一个字符串 9632580147,当我将其转换为 int 时,使用以下代码:

            try{  
                sNumberInt = Integer.parseInt(sNumber);  
            } catch(NumberFormatException nfe) {  
                Log.d("NUMBER", nfe.getMessage());
                return;  
            } 

它进入 catch 块说Invalid int: "9632580147"... 有谁知道如何解决这个问题?

谢谢

【问题讨论】:

  • 删除号码周围的"s。
  • 字符串本身没有引号,我只是放在这里。
  • 你能贴出你的字符串吗?
  • int 最大值为2,147,483,647.
  • 字符串是9632580147....

标签: java android string int type-conversion


【解决方案1】:

当你输入时

int sNumber = 9632580147;

进入你的代码,编译器会告诉你:

int 类型的字面量 9632580147 超出范围

原因是您的数字太大而无法放入 int,请改用 long。

【讨论】:

    【解决方案2】:

    int 的最大值是 2147483647,而您正在尝试传递更大的 9632580147。试试Long.parseLong(sNumber)

    【讨论】:

      【解决方案3】:

      您传递的值似乎大于 32 位: 9632580147 = 1000111110001001011000001000110011(34位)

      【讨论】:

        【解决方案4】:

        Integer 最大值是 2147483647。如果你想分割那个数字,你需要把它解析成一个Long

        【讨论】:

          【解决方案5】:

          Java 中整数的最大值为2147483647,而您的输入9632580147 更大。而是使用长数据类型:

          long sNumberLong = Long.parseLong(sNumber);
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-12-18
            • 1970-01-01
            • 2016-10-30
            • 1970-01-01
            • 2018-06-23
            • 2018-02-10
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多