2015-04-17 46 views
0

以下兩種方法(sortRows和sortColumns)應該返回一個rListcList的二維數組,但我相信我宣稱它是錯誤的。從方法返回二維數組的正確語法

在我嘗試打印它的主底部;該數組不返回到主方法。

在主:

RLIST和CLIST不能被解析到一個變量。

public class Markov { 
    public static void main(String[] args) { 

     double[][] matrix = new double[3][3]; 

     int r, c; 
     double val; 
     String inputV; 

     // asks user for values 
     for (c = 0; c < 3; c++) 
      for (r = 0; r < 3; r++) { 
       inputV = JOptionPane.showInputDialog("Enter value for row # " + (r + 1) + " , column # " + (c + 1)); 
       val = Double.parseDouble(inputV); 
       matrix[c][r] = val; 
     } 
     if (ValidateMarkov(matrix) == false) { 
      System.out.println(" Invalid Markov, values must be postive, colummn values must sum to 1.0 "); 
     } else { 
      System.out.println("Valid Markov"); 
     } 

     SortRows(matrix); 
     SortColumns(matrix); 

     // Prints the matrices 
     for (r = 0; r < 3; r++) { 
      System.out.println(); 

      for (c = 0; c < 3; c++) { 
       System.out.print(" " + matrix[r][c] + " "); 
      } 
     } 

     for (r = 0; r < 3; r++) { 
      System.out.println(); 

      for (c = 0; c < 3; c++) { 
       System.out.print(" " + rTemp[r][c] + " "); 
      } 
     } 

     for (r = 0; r < 3; r++) { 
      System.out.println(); 

      for (c = 0; c < 3; c++) { 
       System.out.print(" " + cTemp[r][c] + " "); 
      } 
     } 
    } 

    public static boolean ValidateMarkov(double[][] n) { 
     double sum; 

     for (int c = 0; c < 3; c++) { 
      sum = 0; 
      for (int r = 0; r < 3; r++) { 
       if (n[c][r] < 0) { 
        return false; 
       } 
       sum += n[c][r]; 
      } 

      if (sum != 1) { 
       return false; 
      } 
     } 
     return true; 
    } 

    public static double[][] SortRows(double[][] m) { 
     int r, c; 
     double[][] rTemp = new double[3][3]; 

     for (r = 0; r < 2; r++) 
      for (c = 0; c < 2 - c; c++) 
       if (m[r][c] > m[r][c + 1]) { 
        rTemp[r][c] = m[r][c]; 
        m[r][c] = m[r][c + 1]; 
        m[r][c + 1] = rTemp[r][c + 1]; 
       } 
     return rTemp; 
    } 

    public static double[][] SortColumns(double[][] n) { 

     int r, c; 
     double[][] cTemp = new double[3][3]; 

     for (c = 0; c < 2; c++) 
      for (r = 0; r < 2 - r; r++) 
       if (n[c][r] > n[c][r + 1]) { 
        cTemp[c][r] = n[c][r]; 
        n[c][r] = n[c][r + 1]; 
        n[c][r + 1] = cTemp[c][r + 1]; 
       } 
     return cTemp; 
    } 
} 
+1

什麼是錯誤?你也可以格式化你的代碼?編輯:它編譯罰款給我,沒有錯誤。 –

+1

在您的問題中包含錯誤信息? –

回答

1

請使用駝峯在Java方法名稱,有助於從方法來區分等級。我認爲錯誤是你不存儲調用的結果,這裏

SortRows(matrix); // <-- returns rTemp 
SortColumns(matrix); // <-- returns cTemp 

,因爲你使用(並返回既是new double[][])。你需要像

matrix = SortRows(matrix); // <-- sortRows(matrix); 
matrix = SortColumns(matrix); // <-- sortColumns(matrix);