<pre id=\"best-answer-content\" class=\"reply-text mb10\">调试后发现你程序有问题:value[j]=value1[j] - value2[j];value[j]=value1[j] value2[j];value[j]=tp;这几句你的结果都是存回了value数组,可是实际上,在你的测试程序里,
jz.setJuZhen(value2);
jz.displayJuZhen();
int[][] v1 = jz.plus(value1, value2);
jz.setJuZhen(v1);
你的value2首先赋值给了value数组,即value和value2引用变量指向了内存中同个数组,之后在jz.setJuZhen(v1);这一句,你同时更新了value和value2数组,所以在后面你使用value2数组时,其实它的值都是前一步骤的运行结果。即是,你先矩阵相加,之后的value2就是相加的结果,你再进行相减的时候,实际上就是value1减去之前的和了。
我修改了minus,plus,multiplication方法,还有修改了测试程序。
public int[][] plus(int[][] value1, int[][] value2) // 矩阵加
{
int[][] tempValue = new int[3][3];
if (value1.length == value2.length
ivalue1.length; i){
for (int j = 0; jvalue1[0].length; j){
tempValue[j] = value1[j] value2[j];
}
}
return tempValue;
} else {
System.out.println(\"这两个数组不能相加\");
return FALSE;
}
}
public int[][] minus(int[][] value1, int[][] value2) // 矩阵减
{
int[][] tempValue = new int[3][3];
if (value1.length == value2.length
ivalue1.length; i){
for (int j = 0; jvalue1[0].length; j){
tempValue[j] = value1[j] - value2[j];
}
}
return tempValue;
} else {
System.out.println(\"这两个数组不能相减\");
return FALSE;
}
}
public int[][] multiplication(int[][] value1, int[][] value2) // 矩阵乘
{
int[][] tempValue = new int[3][3];
int tp = 0;
if (value1[0].length == value2.length
ivalue1.length; i){
for (int j = 0; jvalue2[0].length; j){
tp = 0;
for (int k = 0; kvalue1[0].length; k){
tp = value1[k] * value2[k][j] tp;
}
tempValue[j] = tp;
}
}
return tempValue;
} else {
System.out.println(\"这两个数组不能相乘\");
return FALSE;
}
}
测试程序:
import java.util.*;
public class TestJuZhen {
public static void main(String[]args){
Random rand = new Random();
int[][] value1 = new int[3][3];
int[][] value2 = new int[3][3];
for(int i = 0;i3;i){
for(int j = 0;j3;j){
value1[j] = rand.nextInt(3);
value2[j] = rand.nextInt(3);
}
}
JuZhen jz = new JuZhen();
jz.setJuZhen(value1);
jz.displayJuZhen();
jz.setJuZhen(value2);
jz.displayJuZhen();
int[][] v1 = jz.plus(value1, value2);
jz.setJuZhen(v1);
System.out.println(\"矩阵相加:\");
jz.displayJuZhen();
int[][] v2 = jz.minus(value1, value2);
jz.setJuZhen(v2);
System.out.println(\"矩阵相减:\");
jz.displayJuZhen();
int[][] v3 = jz.multiplication(value1, value2);
jz.setJuZhen(v3);
System.out.println(\"矩阵相乘:\");
jz.displayJuZhen();
}
} |