Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ArrayIndexOutofBounds循环内部异常_Java_For Loop_Indexoutofboundsexception - Fatal编程技术网

Java ArrayIndexOutofBounds循环内部异常

Java 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 }

在这里,我取一个超过九位数的数字,将数字分成九位数的组,并将其存储在一个数组中。 当我运行此代码以将值存储在ArrayOfNumber中时,会抛出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;

        }
    }
}
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
子句开始您的示例,不如发布一个简短但完整的程序来演示问题,包括哪一行失败。在这里,我将编辑我的帖子和评论,什么是干净的方法?