新手写了个JAVA程序。用做2个数组相乘~编译对了可没结果~麻烦高手看下

来源:百度知道 编辑:UC知道 时间:2024/07/04 07:49:01
import javax.swing.JOptionPane;
public class Question3{
public static void main(String[] args){
int[][] b={{3,4},{4,6},{2,1}};
int[][] a={{1,2,9},{3,5,1}};
int[][] c=multiplyMatrix(a,b);
for(int i=0;i<3;i++)
for(int j=0;j<3;j++){
System.out.print(" "+c[i][j]+" ");
}
System.out.print("\n");
}
public static int[][] multiplyMatrix(int[][] a,int[][] b){
int i,j,k,m;
i=a.length;j=a[0].length;k=b.length;m=b[0].length;//a[i][j] b[k][m]
int[][] result=new int[i][m];
if(j==k){
for(int x=0;x<i;i++)
for(int y=0;y<m;y++)
for(int d=0;d<j;d++){
result[x][y]+=a[x][d]*b[d][y];
}
}
else System.out.println("It's can't multiped!");
return result;
}
}
还是不行~~不知道是不是我的JC~有时候对的程序在别人的JC上行。在我的机器上就不行了。

两个错误:
public static int[][] multiplyMatrix(int[][] a,int[][] b) 方法里面第一层for循环有错误,for(int x=0;x<i;i++) 后面i++应该改为x++,否则就是死循环了,你怎么也打不出东西来的。
另外,main主函数里的两层循环也有问题,
for(int i=0;i<3;i++)
for(int j=0;j<3;j++){
根据你给的数组最后得到的结果数据是2*2的,会报数组下标越界的

for(int x=0;x<i;i++) --->x++
for(int y=0;y<m;y++)
for(int d=0;d<j;d++){

哎呀,来晚了……

编写 没 问题
可能 是 你 在 及其 的 上 问题