新手求助: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();
}
}
} 展开
/**
* <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();
}
}
} 展开
1个回答
展开全部
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];
}
}
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];
}
}
追问
但是这样改了还是运行不了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询