这里我已经使用泛型类实现了矩阵加法程序,但它给了我错误的程序答案。请你帮我解决这个问题。对我来说这将是一个很大的帮助...在此先感谢...
package practical_5;
class MatrixOperation<T extends Number,V extends Number>
{
T[][] m1;
V[][] m2;
MatrixOperation(T[][] o,V[][] b)
{
m1=o;
m2=b;
}
void addition()
{
double ans[][]=new double[m1.length][m2.length];
for(int i=0;i<m1.length;i++)
{
for(int j=0;j<m1[0].length;j++)
{
ans[i][j]=m1[i][j].doubleValue()+m2[i][j].doubleValue();
System.out.print(ans[i][j]);
}
}
}
void display(T[][] m1,V[][] m2,double ans[][])
{
for(int i=0;i<m1.length;i++){
for(int j=0;j<m2[0].length;j++){
System.out.print(ans[i][j]);
}
}
}
}
class Matrix{
public static void main(String[] args) {
Integer m[][]=new Integer[3][3];
Integer m1[][]=new Integer[3][3];
double ans[][]=new double[3][3];
int cnt=0;
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
m[i][j]=++cnt;
System.out.print(m[i][j]);
}
}
System.out.println("");
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
m1[i][j]=cnt--;
System.out.print(m1[i][j]);
}
}
MatrixOperation<Integer,Integer> mobj=new MatrixOperation<Integer,Integer>(m,m1);
mobj.addition();
mobj.display(m, m1, ans);
}
}
答案 0 :(得分:0)
当您调用addition
方法时,您将声明自己的本地ans
2D数组,并忽略您自己的结果。 ans
中的main
2D数组未更改,因此它仍具有所有默认值 - 0.0
。
而是return
ans
中的addition
数组。另外,在addition
中将ans
的结果分配给main
。
在打印出矩阵时,它还有助于在您的数字和行之间的换行符之间打印一些空格。
答案 1 :(得分:0)
您没有将ans
设置为main()
内的任何内容,因此它会全部为零。调用addition()
内部的输出对我来说似乎是正确的。
一种解决方案是重新定义addition()
方法以返回double[][]
而不是void
。在该方法的末尾添加return ans;
。在main()
中,将mobj.addition()
的返回值指定给局部变量ans
。
或者,在ans
中创建MatrixOperation
字段,摆脱ans
和addition()
中的本地main()
变量并使用{{1 } mobj.ans
{和main()
内的ans
字段。