为了账号安全,请及时绑定邮箱和手机立即绑定

报错,如题,请教下这是什么错?

报错,如题,请教下这是什么错?

紫衣仙女 2022-07-13 15:11:19
class Matrix{int m; //行int n; //列int [][] array = new int[10][];Matrix MatrixMul(Matrix ma1, Matrix ma2) //乘法{Matrix matrix_mul = new Matrix();matrix_mul.m = ma1.m;matrix_mul.n = ma2.n;matrix_mul.array = new int[matrix_mul.m][matrix_mul.n];for(int k = 0; k < matrix_mul.m; k++){matrix_mul.array[k] = new int[matrix_mul.n];}for(int i = 0; i < matrix_mul.m; i++){for(int j = 0; j < matrix_mul.n; i++){matrix_mul.array[i][j] = 0;for(int k = 0; k < ma1.n; k++){matrix_mul.array[i][j] += ma1.array[i][k] * ma2.array[k][j];}}}return matrix_mul;}}//main函数里的部分if(ma1.n == ma2.m){System.out.println("能做乘法运算,结果是:");Matrix ma5 = new Matrix();ma5 = ma5.MatrixMul(ma1, ma2);for(int i = 0; i < ma5.m; i++){for(int j = 0; j < ma5.n; j++){System.out.print(ma5.array[i][j] + " ");}System.out.println( );}}elseSystem.out.println("不能做乘法运算");}
查看完整描述

2 回答

?
繁华开满天机

TA贡献1816条经验 获得超4个赞

1. Matrix MatrixMul(Matrix ma1, Matrix ma2) //乘法
{
Matrix matrix_mul = new Matrix();
matrix_mul.m = ma1.m;
这里边的Matrix matrix_mul = new Matrix();声明的是一个局部变量,只在方法内部有效,方法调用完之后会释放,不会有什么返回结果的吧。我觉得Matrix matrix_mul = new Matrix();放到方法外边比较好。
2. 还有就是main里边的代码都粘全了么?如果粘全了的话,那ma1和ma2是在哪里声明的呢?如果调用的是Matrix MatrixMul(Matrix ma1, Matrix ma2)里边的话,那也不对吧,他们都是形参只在声明的方法内部有效,外部方法不能调用的。不知道这个数组越界的错误是怎么报出来的。

查看完整回答
反对 回复 2022-07-18
?
临摹微笑

TA贡献1982条经验 获得超2个赞

for(int j = 0; j < matrix_mul.n; i++)这里你忘了把i改成j。
第二个没有给matrix_mul.array = new int[matrix_mul.m][matrix_mul.n],这个数组初始化,在main函数里输出结果应该都是0;
MatrixMul方法,这个方法的算法是:二维数组里某个元素的值等于这个元素的列值乘以这个元素的行值然后进行相加赋给这个元素。

查看完整回答
反对 回复 2022-07-18
  • 2 回答
  • 0 关注
  • 130 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号