Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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 一维阵列的矩阵运算_Java_Arrays_Methods_Indexoutofboundsexception - Fatal编程技术网

Java 一维阵列的矩阵运算

Java 一维阵列的矩阵运算,java,arrays,methods,indexoutofboundsexception,Java,Arrays,Methods,Indexoutofboundsexception,这里有两种方法将两个1-D数组相乘,每个数组包含五个整数,并显示生成的2-D(5x5)数组。不幸的是,我没有得到我所希望的结果,因为我得到了一个ArrayIndexOutOfBoundsException。我检查了我的代码以查找bug,但似乎找不到错误。错误消息还告诉我错误发生在mult[i][j]=array1[i]*array2[j]语句 public static int [][] matrixMult(int [] array1, int [] array2){ int []

这里有两种方法将两个1-D数组相乘,每个数组包含五个整数,并显示生成的2-D(5x5)数组。不幸的是,我没有得到我所希望的结果,因为我得到了一个ArrayIndexOutOfBoundsException。我检查了我的代码以查找bug,但似乎找不到错误。错误消息还告诉我错误发生在
mult[i][j]=array1[i]*array2[j]语句

public static int [][]  matrixMult(int [] array1, int [] array2){

    int [][] mult = new int [imax][jmax];
    int i = 0;
    int j = 0;

    while(i < imax){
        while(j < jmax){

            mult[i][j] = array1[i]*array2[j];

            if(j == jmax-1){

                i++;
                j = 0;

            }else{

                j++;
            }
        }
    }

    return mult;
}

public static void print2DArray(int array[][]){

    int i = 0;
    int j = 0;

    while(i < imax){
        while(j < jmax){

            System.out.print("(" + i + ", " + j + ")   " + array[i][j]);

            if(j == jmax-1){

                i++;
                j = 0;

            }else{

                j++;
            }

        }
    }
}
公共静态int[][]矩阵结果(int[]array1,int[]array2){
int[][]mult=新的int[imax][jmax];
int i=0;
int j=0;
而(i
j==jmax-1
时,应该中断内部循环,否则在下一次迭代中
i
将变为5,这将给您带来ArrayIndexOutOfBoundsException

if(j == jmax-1){
    i++;
    j = 0;
    break; //exit the inner loop
}else{
    j++;
}

如果你想得到答案,就提出一个答案。然而,我最好的猜测是,
array1
imax
短,或者
array2
jmax
短。在任何情况下,依赖实例变量都有点奇怪,因为Java数组知道它们自己的长度。是的,去掉实例变量,使用数组的长度。因此,如果使用
for
循环,而不是
while
循环,代码会更清晰。