【发布时间】:2015-12-19 21:37:06
【问题描述】:
这里我取一个超过九位数的数字,将数字分成九位数的组并将其存储在一个数组中。 当我运行此代码将值存储在 arrayOfNumbers 中时,我会抛出一个 ArrayIndexOutOfBoundsException。
public BigNum(String s) {
if (badNum(s)) {
throw new IllegalArgumentException(); //Exception to check for invalid input
}
int arraySize = 1;
num = s;
int [] arrayOfNumbers = new int[arraySize];
int numSize = s.length();
if (numSize <= 9)
{
arraySize = 1;
arrayOfNumbers[0] = Integer.parseInt(s); //THIS CLAUSE IS WORKING
}
else if((numSize % 9) >= 1) {
arraySize = ((numSize % 9) + 1);
int x = 0;
int y = 9;
int[] evenString = new int[arraySize];
for (int i=0; i < arraySize; i++){
String w = s.substring(x,y);
arrayOfNumbers[i] = Integer.parseInt(w); //THIS LINE IS FAILING *********
if(i == arraySize - 2){
x = x + 9;
y = y + (numSize % 9);
}
else{
y = y + 9;
x = x + 9;
}
}
System.out.println(arraySize);
}
else if((numSize % 9 == 0)) {
arraySize = (numSize/9);
int x = 0;
int y = 9;
for (int i=0; i < arraySize; i++){
String w = s.substring(x,y);
int[] evenString = new int[arraySize]; //THIS CLAUSE IS WORKING
y = y*2;
x = x+9;
}
}
}
【问题讨论】:
-
你能把arrayOfNumbers的初始化
-
我认为
arraySize应该是numSize / 9,而不是numSize % 9? -
与其以
else子句开始您的示例,不如发布一个简短但完整 程序来演示问题 - 包括哪一行出现故障。 -
在这里,我将编辑我的帖子并在卡住的行中发表评论
标签: java for-loop indexoutofboundsexception