【问题标题】:Android NumberFormatException [duplicate]Android NumberFormatException [重复]
【发布时间】:2015-07-24 00:22:20
【问题描述】:

我收到以下错误:

Caused by: java.lang.NumberFormatException: Invalid int: "1437061569000"

完全错误here

我检查了字符串是否为空,应用了 trim() 和 replace() 方法来删​​除任何非整数字符。

错误所在的行 (42) 是对字符串运行 parseInt 方法的行。

代码在这里:

@Override
protected String doInBackground(String... college) {
    String data_url = "......";
    int lastUpdateTimestamp;
    try {
        String data = DownloadText(data_url).trim().replaceAll( "[^\\d]", "" );
        Log.e("doinback", data);
        if (data == null) { Log.e("doinback", "ITS NULL"); }
        lastUpdateTimestamp = Integer.parseInt(data);
        res = "done";
    } catch (IOException e) {
        res = "ERROR";
    }
    return res;
}

【问题讨论】:

  • 拜托,学习java的基础...int不能大于Integer.MAX (2^31 − 1) ...

标签: android


【解决方案1】:

这个数字太大了。 int 可以具有的最大值是 2^31 - 1。请参阅here

java.lang.Integer

MAX_VALUE

public static final int MAX_VALUE

一个保持int 可以拥有的最大值的常数,2^31-1。

2^31 - 1 = 2 147 483 647

【讨论】:

    【解决方案2】:

    Java 整数

    Int 数据类型是一个 32 位有符号二进制补码整数。

    最小值为 - 2,147,483,648.(-2^31)

    最大值为2,147,483,647(含)。(2^31 -1)

    1.437.061.569.000 远远大于最大值。

    您需要使用 long 变量。

    Java 长篇

    Long 数据类型是 64 位有符号二进制补码整数。

    最小值为 -9,223,372,036,854,775,808.(-2^63)

    最大值为 9,223,372,036,854,775,807(含)。 (2^63 -1)

    请阅读http://www.tutorialspoint.com/java/java_basic_datatypes.htm

    【讨论】:

      【解决方案3】:

      你为什么不改用long


      NumberFormatException 被抛出,因为 Integer 值超出限制。 Integer 的限制是从 -2,147,483,6482,147,483,647

      如果你想使用这个数字(1437061569000)作为你的lastUpdateTimestamp变量,你可以把它转换成long,它比Integer有更大的限制,即从-9,223,372,036,854,775,8089,223,372,036,854,775,807

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-03-11
        • 1970-01-01
        • 1970-01-01
        • 2018-02-23
        • 2018-03-14
        • 1970-01-01
        • 1970-01-01
        • 2011-05-23
        相关资源
        最近更新 更多