У меня есть практика по java oop программированию, и у меня есть некоторые проблемы. Она состоит из разреженной матрицы, и в этой практике у нас есть несколько интерфейсов, таких как ниже
package mainpack;
public interface iSparseMat {
public int[][] mat = new int[10][3];
public int NonZeroElements = 6;
public final int RowSize=4, ColSize=4;
public void initialize();
public void Add(int[][] a);
public void ReverseOnSubDiameter();
public void ReverseOnMainDiameter();
public void SortRows();//optional
public void Print();
}
, и у меня есть a Testspace. java класс, как показано ниже
package mainpack;
public class TestSparse implements iSparseMat, Comparable<int[][]>{
public TestSparse()
{
System.out.println("Test Sparse class constructor invoked.");
}
public void initialize()
{
for (int i = 0; i < 5 ; i++) {
for (int j = 0; j < 3; j++) {
if( j == 2){
this.mat[i][j] = (int) (Math.random() * ((10 - 1) + 1)) + 1;
}else{
this.mat[i][j] = (int) (Math.random() * ((3 - 0) + 1));
}
}
}
// assign five nonzero values to some indices of the matrix
// row and column number of these indices should be generated by random method
}
public void SortRows() {}//optional
public void Add(int[][] a){
int j = 0;
for (int i = 0;i <5; i++) {
while( j < 5 ) {
if (this.mat[i][0] == a[j][0] && this.mat[i][1] == a[j][1]){
this.mat[i][2] = this.mat[i][2] + a[j][2];
}else{
this.mat[i+5][0] = a[j][0];
this.mat[i+5][1] = a[j][1];
this.mat[i+5][2] = a[j][2];
}
j++;
}
}
} // adds the input matrix to the exisiting one (mat = mat + a)
public void ReverseOnSubDiameter(){} // substitutes the elements of the matrix over the main diameter
public void ReverseOnMainDiameter(){} // substitutes the elements of the matrix over the sub-diameter
public void Print() {
int[][] normalmat = new int[ColSize][RowSize];
for (int i = 0; i < ColSize; i++) {
for (int j = 0; j <RowSize ; j++) {
normalmat[i][j] = 0;
}
}
for (int i = 0; i <5 ; i++) {
normalmat[this.mat[i][1]][this.mat[i][0]]= mat[i][2];
}
/*
for (int i = 0; i <ColSize ; i++) {
for (int j = 0; j < RowSize; j++) {
System.out.print(normalmat[i][j] + " ");
}
System.out.println();
}
*/
for (int i = 0; i <5 ; i++) {
for (int j = 0; j <3; j++) {
System.out.print(this.mat[i][j] + " ");
}
System.out.println();
}
} //prints the matrix as a normal matrix (not sparse)
public int compareTo(int[][] A)
{
// return number of nun-zero elements of mat - number of nun-zero elements of A
return 0;
}
public static void main(String[] args) {
TestSparse TS1 = new TestSparse(),TS2 = new TestSparse();
TS1.initialize();
System.out.println("TS1 is: \n");
TS1.Print();
TS2.initialize();
System.out.println("TS2 is: \n");
TS2.Print();
System.out.println("،Ts1 & TS2 Collect: \n");
TS1.Add(TS2.mat);
TS1.Print();
System.out.println("Difference in non-zero elements of matrices are " + TS1.compareTo(TS2.mat));
//TS1.SortRows();
//TS1.Print();
/* TS1.ReverseOnSubDiameter();
TS1.Print();
TS1.ReverseOnMainDiameter();
TS1.Print();*/
}
}
Я хочу вычислить TS1.mat с помощью TS2.mat в методе Add. но когда я использую этот код, он не может найти TS1.mat, а просто вычисляет TS2.mat с помощью TS2.mat и отправляет результат
Test Sparse class constructor invoked.
Test Sparse class constructor invoked.
TS1 is:
1 2 3
2 2 10
2 0 9
1 2 8
3 2 2
TS2 is:
0 1 1
2 2 4
1 1 10
0 0 8
2 0 7
،Ts1 & TS2 Collect:
0 1 2
2 2 4
1 1 10
0 0 8
2 0 7
Difference in non-zero elements of matrices are 0
. Вы видите, что он выполняет этот результат. TS2.mat + TS2.mat но я не хочу этого Мне нужен TS1.mat + TS1.mat, но я не знаю, что мне делать