我有一个数字格式的异常错误

时间:2015-07-18 13:17:03

标签: java android integer numberformatexception

我收到此错误" java.lang.NumberFormatException:无效的int:" 3e + 06""并阻止我的应用程序运行。我将数字字符串值传递给int,这发生了。数字对于整数来说是大吗?任何人都可以告诉我这意味着什么以及任何解决方案吗?

        Bundle getAlarmInfo = getIntent().getExtras();
        titleOfAlarm = getAlarmInfo.getString("Title");
        totalTime = getAlarmInfo.getString("totalTime");

//好的,我试图获取getAlarmInfo.getString的值(" totalTime");并将其传递给总时间,这是一个字符串

        actualTimeFiniliazedInMilliSeconds = Integer.parseInt(totalTime);

//然后我将该值存储在actualTimeFiniliazedInMilliSeconds中 这是一个int。

  titleTextView.setText(titleOfAlarm);

//然后我将该值传递给CountDownTime,它只接受int和long。

        countDown = new CountDownTime( actualTimeFiniliazedInMilliSeconds, timeInterval);
        countDown.start();

3 个答案:

答案 0 :(得分:1)

首先你应该发布一些代码,但是:

  1. 你在解析什么价值?

  2. 检查值是否过大的最快方法是将其解析为Long类型。如果它适合你有你的答案

  3. //编辑

    如果您需要intlong并且您正在投射3e+06字符串,请尝试将其投射到BigInt并从中投射到整数。整数可以处理3000000的值,这不是问题。但是从字符串中进行转换有问题,所以使用我的方式应该没问题

答案 1 :(得分:0)

您可以使用BigDecimalBigInteger,如下所示:

import java.math.BigDecimal;
import java.math.BigInteger;

public class BigIntExample {

    public static void main(String[] args) {
        String asString = "3e+06";
        BigInteger number = new BigDecimal(asString).toBigInteger();

        System.out.println("The number is : "+number);
    }
}

输出:

  

号码是:3000000

答案 2 :(得分:0)

您可以使用BigDecimal intValue()来获取整数的科学记数法: -

int val = new BigDecimal("3e+06").intValue(); // outputs :- 3000000

如果val大于Integer.MAX_VALUE,您可以使用BigInteger,如: -

BigInteger val = new BigDecimal("3e+06").toBigInteger(); // outputs :- 3000000