2011-09-06 40 views
0
我有一些麻煩,從一個方法返回矩陣數據發送到主類

,我使用:的Java:調用/返回錯誤

matrix = setFalse(falseMatrix); 

打電話:

public static boolean[][] setFalse (boolean[][] matrix[][]) { 

     // Changes each value of the matrix to a false boolean value 

     boolean[][] falseMatrix = null; 

     for (int r = 0; r < matrix.length; r++) { 
      for (int c = 0; c < matrix[0].length; c++) { 
       falseMatrix[r][c] = false; 

      } 
     } 
     return falseMatrix; 

    } 

我收到錯誤,falseMatrix無法解析爲變量,但是當我將它作爲參數時,我得到一個致命錯誤。

回答

2

您的代碼當前爲困惑。我懷疑你想:

public static boolean[][] setFalse(boolean[][] matrix) { 
    // Changes each value of the matrix to a false boolean value 

    for (int r = 0; r < matrix.length; r++) { 
     for (int c = 0; c < matrix[r].length; c++) { 
      matrix[r][c] = false; 
     } 
    } 
    return matrix; 
} 

呼叫方法你怎麼那麼另當別論。您需要已經具有類型boolean[][]的變量(或其他表達式)。不幸的是,您沒有向我們展示任何調用代碼的上下文。

+0

謝謝你,這是很什麼,我希望實現的,很抱歉,如果我沒有提供所有需要的上下文 – Justin

2

變化

(boolean[][] matrix[][]) { 

(boolean[][] matrix) { 

boolean[][] falseMatrix = null; 

boolean[][] falseMatrix = new boolean[matrix.length][]; 

和betw插入EEN兩個for

falseMatrix[r] = new boolean[matrix[r].length]; 

終於在第二for

matrix[0].length; 

改變

matrix[r].length; 
0
for (int r = 0; r < matrix.length; r++) { 
      for (int c = 0; c < matrix[0].length; c++) { 

你或許應該改變matrix[0]matrix[r]。不知道它是否能解決你的問題,但我很確定你想要什麼。

0
boolean[][] falseMatrix = null; 

falseMatrix是空引用。您必須在嘗試將值保留在其索引之前將其初始化爲行,列。

-1

您需要:

boolean[][] falseMatrix = new boolean[matrix.length][matrix[0].length]; 
0

您使用兩個不同的變量,falseMatrixmatrix第一行(主叫用戶線),因爲它給上falseMatrix錯誤,那麼我認爲這是錯誤的。

1

變化:

public static boolean[][] setFalse (boolean[][] matrix[][]) { 

要:

public static boolean[][] setFalse (boolean[][] matrix) { 

此外,初始化數組:

//HERE 
    boolean[][] falseMatrix = new boolean[matrix.length]; 

    for (int r = 0; r < falseMatrix.length; r++) { 
    //AND HERE 
     falseMatrix[r] = new boolean[matrix[0].length]; 
     for (int c = 0; c < falseMatrix[r].length; c++) { 
      falseMatrix[r][c] = false; 
     } 
    } 

    return falseMatrix; 
}