Java ArrayIndexOutofBounds循环内部异常
在这里,我取一个超过九位数的数字,将数字分成九位数的组,并将其存储在一个数组中。 当我运行此代码以将值存储在ArrayOfNumber中时,会抛出ArrayIndexOutOfBoundsExceptionJava ArrayIndexOutofBounds循环内部异常,java,for-loop,indexoutofboundsexception,Java,For Loop,Indexoutofboundsexception,在这里,我取一个超过九位数的数字,将数字分成九位数的组,并将其存储在一个数组中。 当我运行此代码以将值存储在ArrayOfNumber中时,会抛出ArrayIndexOutOfBoundsException public BigNum(String s) { if (badNum(s)) { throw new IllegalArgumentException(); //Exception to check for invalid input }
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;
}
}
}
public BigNum(字符串s){
如有(badNum){
抛出新的IllegalArgumentException();//异常以检查无效输入
}
int-arraySize=1;
num=s;
int[]ArrayOfNumber=新的int[arraySize];
int numize=s.length();
如果(numize=1){
arraySize=((numize%9)+1);
int x=0;
int y=9;
int[]evenString=新int[arraySize];
for(int i=0;i
问题在于,您正在将初始化为只有一个元素的ArrayOfNumber分配给ArrayOfNumber。你是不是想改为分配给evenString?evenString已使用此循环的正确数组大小初始化
您还可以将ArrayOfNumber声明为与evenString数组相同的大小。例如:
int[] arrayOfNumbers = 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;
}
}
int[]arrayOfNumbers=新的int[arraySize];
for(int i=0;i
能否请您将ArrayOfNumber的初始化设置为arraySize
应该是numSize/9
,而不是numSize%9
?与其用else
子句开始您的示例,不如发布一个简短但完整的程序来演示问题,包括哪一行失败。在这里,我将编辑我的帖子和评论,什么是干净的方法?