我是java的初学者。请帮助我,
int i = Integer.parseInt("9876543210123456");
System.out.println("Integer: " + i);
我得到了以下错误,
java.lang.NumberFormatException for input string : "9876543210123456"
答案 0 :(得分:3)
它越过整数限制,你需要BigInteger
BigInteger b = new BigInteger("9876543210123456");
答案 1 :(得分:2)
您无法将上述值转换为int
,因为它超过了Integer的最大值:2,147,483,647。
而是尝试:
Long.parseLong("9876543210123456");
Long的最大值为9,223,372,036,854,775,807。
要检查这些和其他原始数据类型的最大值,请尝试:
Integer.MAX_VALUE;
Long.MAX_VALUE;
// etc for Float, Double...
// Also try MIN_VALUE
答案 2 :(得分:2)
在Java中,原始int数据类型是32位带符号的二进制补码整数 http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
你可以使用Long:
long i = Long.parseLong("9876543210123456");
System.out.println("Long: " + i);
请参阅此处的API - http://docs.oracle.com/javase/7/docs/api/java/lang/Long.html
或者你也可以使用BigInteger:
BigInteger i = new BigInteger("9876543210123456");
System.out.println("BigInteger: " + i);
请参阅此处的API - http://docs.oracle.com/javase/7/docs/api/java/math/BigInteger.html
BigInteger类似于原始整数类型,除了它提供任意精度,因此BigIntegers上的操作不会溢出或丢失精度。除标准算术运算外,BigInteger还提供模运算,GCD计算,素数测试,素数生成,位操作以及一些其他杂项操作。
如果您对使用原语或对象引用感到困惑,这是一个很好的讨论
答案 3 :(得分:0)
在java的int范围内,从-2,147,483,648到2,147,483,647。所以尝试长而不是int。
答案 4 :(得分:0)
NumberFormat nf = NumberFormat.getInstance();
您还可以使用NumberFormat来解析数字:
myNumber = nf.parse("9876543210123456");
见下文
http://docs.oracle.com/javase/7/docs/api/java/text/NumberFormat.html
答案 5 :(得分:0)
虽然BigInteger可能会有效,但最好的方法是仅保留String
并将其显示为String
。这是处理长数字数字的理想方式,您最终不会遇到任何类型的异常。
答案 6 :(得分:-1)
long x = Long.parseLong("9876543210123456");
System.out.println("Integer: " + x);
或者使用后续行
BigInteger bint = new BigInteger("9999999999999999", 16);
请尝试这个..无法将超过13位的字符串转换为int..so,你应该转换为long