java需要帮助解析字符串中的数字,并将它们放入整数数组中
public class HugeInteger {
private final int SIZE = 40;
private int[] bigArray = new int[SIZE];
public void parse (String str) {
String[] s = str.split("\\D+");
for (int i = 0; i < s.length; i++) {
bigArray[i] = Integer.parseInt(s[i]);
}
}
public void printArray() {
for (int i = 0; i < SIZE; i++) {
System.out.print(bigArray[i]);
}
}
}
public class IntegerTest {
public static void main(String[] args) {
String userStr = "";
Scanner input = new Scanner(System.in);
System.out.print("Enter first HugeInteger: ");
userStr = input.nextLine();
HugeInteger big = new HugeInteger();
big.parse(userStr);
big.printArray();
}
}
基本上,如果我输入一个长度超过10位的字符串,它会抛出异常,并说:
Exception in thread "main" java.lang.NumberFormatException: For input string: "12345367899" at java.lang.NumberFormatException.forInputString(Unknown Source) at java.lang.Integer.parseInt(Unknown Source) at java.lang.Integer.parseInt(Unknown Source) at HugeInteger.parse(HugeInteger.java:9) at IntegerTest.main(IntegerTest.java:13)
不知道这意味着什么,也不知道如何修复。谢谢
# 1 楼答案
正如您所知,
int
数据类型是一个32-bit
有符号二的补码整数,并且我想你可以用
long
作为64-bit
符号二的补码整数# 2 楼答案
如果输入的数字超出了int的范围,则应使用long
代码示例如下: