0
それぞれが5つの整数を保持する2つの1-D配列を乗算し、その結果の2次元(5×5)配列を表示する2つの方法があります。残念ながら、私はArrayIndexOutOfBoundsExceptionを取得すると期待している結果を得られません。私はバグを探すために自分のコードに行きましたが、エラーを見つけることができませんでした。エラーメッセージはまた、エラーがmult[i][j] = array1[i]*array2[j];
ステートメントで発生することを通知します。1-D配列による行列演算
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++;
}
}
}
}
回答が必要な場合は[mcve]を提示してください。しかし、私のベスト*推測*は、 'array1'が' imax'よりも短いか、 'array2'が' jmax'よりも短いことです。いずれにしても、インスタンス変数に依存しているのはちょっと奇妙です。なぜなら、Java配列は自分の長さを知っているからです。 –
ええ、インスタンス変数を取り除き、配列の長さを使用する –
また、 'while'ループの代わりに' for'ループを使用するとコードをもっとはっきりさせることができます。 –