问题描述
我收到此错误“ 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);
//然后,我将这个值存储在int的ActualTimeFiniliazedInMilliSeconds中。
titleTextView.setText(titleOfAlarm);
//然后,我将该值传递给CountDownTime,该值仅接受int和long。
countDown = new CountDownTime( actualTimeFiniliazedInMilliSeconds, timeInterval);
countDown.start();
1楼
首先,您应该发布一些代码,但是:
您解析什么值?
检查值是否过大的最快方法是将其解析为
Long
类型。 如果合适,您有答案
//编辑
如果您需要int
或long
并且要转换为3e+06
字符串,请尝试将其转换为BigInt并从其转换为Integer。
整数可以处理3000000的值,这不是问题。
但是从字符串转换有问题,所以使用我的方式应该可以
2楼
您可以使用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
3楼
您可以将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