新手求助:Exception in thread "main" java.lang.Error: 无法解析的编译问题: 不可达代码

importjavax.swing.JOptionPane;/***<br>实现两个矩阵相乘并将结果打印*@authorkillergsm**/publicclassMa... import javax.swing.JOptionPane;
/**
* <br> 实现两个矩阵相乘并将结果打印
* @author killergsm
*
*/
public class Matrix
{
public static void main(String[] args)
{
double[][] m1 =
{
{5,6,8,2},
{8,4,5,6},
{5,6,3,8}
};
double[][] m2 =
{
{5,6,9,8,7},
{5,2,3,6,9},
{9,9,5,4,7},
{3,2,5,1,4}
};

printMatrix(matrixMultiplication(m1,m2));

}
public static double[][] matrixMultiplication(double[][] m1,double[][] m2) //将两个矩阵相乘并返回结果
{
if(isMatrix(m1) == false || isMatrix(m2) == false
|| m1[0].length != m2.length) //如不符合相乘条件直接退出
return new double[0][0];
int x = m1.length;
int y = m1[0].length;
int z = m2[0].length;
int i = 0;
int xz = x*z;
double[][] m = new double[x][z];
for(;i < xz; i++)
{
m[i/z][i%z] = 0;
for(int j = 0; j < y; j++)
{
m[i/z][i%z] += m1[i/z][j] + m2[j][i%z];
}
}
return m;
}
public static boolean isMatrix(double[][] m) // 判断是否为矩阵
{
int i = m.length;
while(i > 1)
{
if(m[i-1].length != m[i-2].length);
return false;
i--;
}
return true;
}
public static void printMatrix(double[][] m) //打印矩阵
{
int i = 0;
int x = m.length;
int y = m[0].length;
int xy = x*y;
for(;i < xy;i++)
{
System.out.print(m[i/y][i%y] );
if(i%xy == y - 1)
System.out.println();
}

}
}
展开
 我来答
S_Kr
2011-09-16 · TA获得超过616个赞
知道小有建树答主
回答量:620
采纳率:100%
帮助的人:494万
展开全部
double[][] m = new double[x][z];
for(;i < xz; i++)
{
m[i/z][i%z] = 0;
for(int j = 0; j < y; j++)
{
m[i/z][i%z] += m1[i/z][j] + m2[j][i%z];
}
}
这里有很明显的错误。
double[][] m = new double[x][z];
这是new一个二维数组,而每个一维数组都要new的。
这样改,你领悟一下
double[][] m = new double[x][z];
for(;i < xz; i++)
{
m[i] = new double[z];//加如的地方。
m[i/z][i%z] = 0;
for(int j = 0; j < y; j++)
{
m[i/z][i%z] += m1[i/z][j] + m2[j][i%z];
}
}
追问
但是这样改了还是运行不了
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式