Java 一维阵列的矩阵运算
这里有两种方法将两个1-D数组相乘,每个数组包含五个整数,并显示生成的2-D(5x5)数组。不幸的是,我没有得到我所希望的结果,因为我得到了一个ArrayIndexOutOfBoundsException。我检查了我的代码以查找bug,但似乎找不到错误。错误消息还告诉我错误发生在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 []
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
循环,代码会更清晰。