我收到此错误" 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();
答案 0 :(得分:1)
首先你应该发布一些代码,但是:
你在解析什么价值?
检查值是否过大的最快方法是将其解析为Long
类型。如果它适合你有你的答案
//编辑
如果您需要int
或long
并且您正在投射3e+06
字符串,请尝试将其投射到BigInt并从中投射到整数。整数可以处理3000000的值,这不是问题。但是从字符串中进行转换有问题,所以使用我的方式应该没问题
答案 1 :(得分:0)
您可以使用BigDecimal
和BigInteger
,如下所示:
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