【发布时间】:2018-03-15 04:42:23
【问题描述】:
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 位的字符串,它会抛出异常:
线程“主”java.lang.NumberFormatException 中的异常:对于输入 字符串:“12345367899”在 java.lang.NumberFormatException.forInputString(Unknown Source) 在 java.lang.Integer.parseInt(未知来源)在 java.lang.Integer.parseInt(未知来源)在 HugeInteger.parse(HugeInteger.java:9) 在 IntegerTest.main(IntegerTest.java:13)
不确定这意味着什么或如何解决它。谢谢!
【问题讨论】:
-
因为它不能用
int表示 -
如果 40 是您的 HugeInteger 可以拥有的最大位数,您应该一次取一个数字(单个字符);你不能调用 Integer.parseInt()。
-
它产生问题的原因在于正在使用的正则表达式,它专门从字符串中选择数字,而不是像您的情况一样,将所有字符串 1234567899 作为令牌的一个条目。而是 1,2,3,....
标签: java