有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

具有一维数组的java矩阵运算

这里有两种方法将两个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++;
            }

        }
    }
}

共 (1) 个答案

  1. # 1 楼答案

    应该在j == jmax-1时中断内部循环,否则在下一次迭代中i将变为5,这将给您ArrayIndexOutOfBoundsException

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