0

我得到一个包含很多矩阵的文件。我需要将它总结为 1 个矩阵。我解析了字符串并将它们存储在一个数组中,传入的文件内容是

0.000 0.000 0.000
 0.000 0.000 0.000
 0.000 0.000 1.000

9.0 12.0    -3.0    
12.0    16.0    -4.0    
-3.0    -4.0    1.0

25.0    45.0    -5.0    
45.0    81.0    -9.0    
-5.0    -9.0    1.0

144.0   12.0    -12.0   
12.0    1.0 -1.0    
-12.0   -1.0    1.0

64.0    56.0    -8.0    
56.0    49.0    -7.0    
-8.0    -7.0    1.0

81.0    72.0    -9.0    
72.0    64.0    -8.0    
-9.0    -8.0    1.0

36.0    72.0    -6.0    
72.0    144.0   -12.0   
-6.0    -12.0   1.0

100.0   80.0    -10.0   
80.0    64.0    -8.0    
-10.0   -8.0    1.0 

64.0    40.0    -8.0    
40.0    25.0    -5.0    
-8.0    -5.0    1.0 

196.0   112.0   -14.0   
112.0   64.0    -8.0    
-14.0   -8.0    1.0 

总结后我会得到

719.000 501.000 -75.000
 501.000 508.000 -62.000
 -75.000 -62.000 10.000

作为我的结果。

我试过这个。但没有得到所需的输出。我能够得到'A'中的所有解析值

/*Parsed*/

           double[][] A = new double[keymatrix.length][keymatrix[0].length];
           for (int i = 0; i<keymatrix.length; i++) {
               for (int j = 0; j<keymatrix[0].length; j++) {
                   A[i][j] = Double.valueOf(keymatrix[i][j]);
            }
           }
          key = new double[A.length][A[0].length];

           for(int sumi = 0;sumi<A.length;sumi++){
               for(int sumj=0;sumj<A[0].length;sumj++){
                   key[sumi][sumj] += A[sumi][sumj];
               }
           }
        }//end loop and key declared as static double [][] ke

               System.out.println("final");
            for(int diai=0;diai<key.length;diai++){
                for(int diaj=0;diaj<key[0].length;diaj++){
                    System.out.print(key[diai][diaj]+"\t");

                }
                System.out.println("");

            }

当我检查我的输出 Key 正在打印 ke 值

输出与迭代

.
.
.
incoming matrix
64.0    40.0    -8.0    
40.0    25.0    -5.0    
-8.0    -5.0    1.0 
final
64.0    40.0    -8.0    
40.0    25.0    -5.0    
-8.0    -5.0    1.0
incoming matrix
196.0   112.0   -14.0   
112.0   64.0    -8.0    
-14.0   -8.0    1.0 
final
196.0   112.0   -14.0   
112.0   64.0    -8.0    
-14.0   -8.0    1.0

有什么建议么。

4

1 回答 1

0

在提供的代码中,您正在循环内重建矩阵键。

您应该在循环之前构建一次,然后添加到它。通过调用

key = new double[A.length][A[0].length];

在循环内部,您每次都有效地重置其值。

还有两个建议:

1)我不明白矩阵 A 的意义是什么,你似乎在 keymatrix 中有你想要的值,那么为什么要复制到 A 然后再键入?

2) 定义一次矩阵的大小int rows = keymatrix.length; int cols = keymatrix[0].length。然后在任何地方使用这些值。这将使代码更容易理解。

如果您有一个函数返回从输入读取的下一个矩阵,如果没有新输入,则返回 null,您最终会得到如下结果:

String[][] keyMatrix = read_matrix(); //reads the first matrix from input 
int rows = keyMatrix.length;
int cols = keyMatrix[0].length;
double[][] sumMatrix= new double[rows][cols];

do {
    for(int i = 0;i<rows;i++){
       for(int j=0;j<cols;j++){
          sumMatrix[i][j] +=  Double.valueOf(keyMatrix[i][j]);
       }
    }
} while (null != ( keyMatrix=read_matrix()  ));
于 2013-11-08T05:13:59.547 回答