就是测试一下两个数组相乘,程序怎么也看不出错误啊,怎么执行就出现E
xception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
问题在 result += a[i][k] * b[k][j];
怎么解决阿???package variant;class C{
public static void main(String args[]) {
int a[][] = { {1, 2, 3}, {4, 5, 6} , {7, 8, 9}};
int[][] b=a.clone();
b = new int[a.length][a[0].length];
System.arraycopy(a, 0, b, 0, a.length); //通过arraycopy()函数拷贝数组
b[0][0] = 4; //改变数组b[0][0]的值
System.out.println("a[][]");
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++) {
System.out.print(a[i][j] + " ");
}
System.out.println();
}
System.out.println("b[][]");
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
System.out.print(b[i][j] + " ");
}
System.out.println();
}
//相乘
int[][] c=new int[3][3];
int result;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
result=0;
for(int k=0;k<3;i++){
result += a[i][k] * b[k][j];
}
c[i][j]=result;
}
}
System.out.println("c[][]");
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
System.out.print(c[i][j] + " ");
}
System.out.println();
} }
}
xception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
问题在 result += a[i][k] * b[k][j];
怎么解决阿???package variant;class C{
public static void main(String args[]) {
int a[][] = { {1, 2, 3}, {4, 5, 6} , {7, 8, 9}};
int[][] b=a.clone();
b = new int[a.length][a[0].length];
System.arraycopy(a, 0, b, 0, a.length); //通过arraycopy()函数拷贝数组
b[0][0] = 4; //改变数组b[0][0]的值
System.out.println("a[][]");
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++) {
System.out.print(a[i][j] + " ");
}
System.out.println();
}
System.out.println("b[][]");
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
System.out.print(b[i][j] + " ");
}
System.out.println();
}
//相乘
int[][] c=new int[3][3];
int result;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
result=0;
for(int k=0;k<3;i++){
result += a[i][k] * b[k][j];
}
c[i][j]=result;
}
}
System.out.println("c[][]");
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
System.out.print(c[i][j] + " ");
}
System.out.println();
} }
}
int[][] c=new int[3][3];
int result;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
result=0;
for(int k=0;k <3;i++){ //应该是k++
result += a[i][k] * b[k][j];
}
c[i][j]=result;
}
}
LZ,错误应该知道是什么吧?数组越界
检查下 result=0;
for(int k=0;k <3;i++){
result += a[i][k] * b[k][j];
}
c[i][j]=result;
result += a[i][k] * b[k][j];
}
这里是i++吗?这里i++,i的值超过了3,数组越界了
是不是应该是k++啊