2013-11-08 2 views
0

Я получаю файл с множеством матриц. Мне нужно суммировать его в 1 матрицу. Я разобрал строку и хранить их в массиве поступающего содержимое файлаПолучить сумму входящих матриц в java

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 

После подведения итогов я SHLD получить

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

как мой результат.

Я пробовал это. но не получая желаемого output.i я в состоянии получить все анализируемые значения «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(""); 

      } 

, когда я проверил мой вывод Ключ печати значение ке

выход вместе с итерации

. 
. 
. 
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 

Любые предложения.

+1

Пожалуйста, попробуйте отладчик. Также попробуйте написать небольшие модульные тесты. – Jayan

+0

Похоже, что вы добавляете только одну матрицу. –

+0

но как это петля..my 1-е значение будет с ключом right.wen 2-й цикл запускает мой новый A, добавленный с предисловием A, хранящийся в Key na? –

ответ

0

В приведенном коде вы перестраиваете матричный ключ внутри цикла.

Вы должны построить его один раз перед циклом, а затем добавить к нему. При звонке

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

Внутри цикла вы фактически каждый раз возвращаете его значение.

Также два suggesionts:

1) Я не понимаю, что это точка Матрица А вы, кажется, имеют значения, которые вы хотите в keymatrix так зачем копировать А, затем на ключ?

2) определяют размер матрицы один раз int rows = keymatrix.length; int cols = keymatrix[0].length. Затем используйте эти значения везде. Это упростит понимание кода.

Если у вас есть функция, которая возвращает следующую матрицу для чтения из входного или нуль, если нет нового входного вы в конечном итоге с чем-то вроде этого:

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() )); 
+0

, но я не смогу получить измерение вне цикла. –

+0

my keymatrix - string.so после разбора. Я конвертирую его в double и пытаюсь суммировать все матрицы A. и окончательное значение sumup находится в ключевой матрице –

+0

Я редактирую код, чтобы объяснить, как получить измерение внутри петля. И работать без A @NSK – odedsh