0
두 개의 1-D 배열에 각각 5 개의 정수를 곱하고 그 결과 2-D (5x5) 배열을 표시하는 두 가지 방법이 있습니다. 불행히도, 나는 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'보다 짧을 것입니다. 자바 배열은 자신의 길이를 알고 있기 때문에 어떤 경우에는 인스턴스 변수에 의존하는 것이 약간 이상합니다. –
그래, 인스턴스 변수를 없애고 배열의 길이를 사용한다 –
또한 while 루프 대신'for' 루프를 사용하면 코드를 훨씬 명확하게 만들 수있다. –