2016-04-28 102 views
-1

我知道& &可用於檢查兩個條件都滿足時,在條件語句中使用,但你怎麼解釋
全[i] [j] =打開[i] [j] & & full [i - 1] [j]; ??
如果我們正在閱讀這段代碼,我們該如何解釋?

注意充分和公開是兩個2D 布爾數組分配時&& do /意味着什麼? JAVA

//i = column j = row 
for (int i = 1; i < N; i++) { 
      for (int j = 0; j < N; j++) { 
       full[i][j] = open[i][j] && full[i - 1][j]; 
       //^^ what happens here? 
} 
+0

您是否運行此代碼以查看真正發生了什麼?我認爲這可能有助於提高對這一表達的理解。 – mantoviejo

+0

是的,我一步一步地理解它在做什麼,它是什麼,並不熟悉&&與=(assign)運算符一起使用。所以想知道實際發生了什麼。 –

回答

1
full[i][j] = open[i][j] && full[i - 1][j]; 

意味着[i][j] && full[i - 1][j]將解析爲一個布爾和作爲另一個陣列的布爾元素進行指定。

+0

這意味着,我們正在處理布爾值在這裏賦值(=)實際上是作爲一個條件運算符工作嗎?如果兩個值都打開[i] [j]和full [i - 1] [j]爲真(?),它將被分配到完整[i] [j]。 –

+0

我明白它在做什麼,但你能解釋一下這裏發生了什麼嗎? is =充當條件操作符嗎? –

+0

不,完整[i] [j]剛剛被設置爲表達式'open [i] [j] && full [i - 1] [j]'這是一個布爾值的結果值。 =只是設置完整的[i] [j]等於這個值,因此只是一個賦值運算符。 –

0

我覺得(不是100%肯定),它被分配值, 當我們使用原始數據類型,我們可以使用一個單一的&做逐位安定, 雖然我們也在做同樣的布爾值,

full[i][j] = open[i][j] && full[i - 1][j]; 

意味着我們正在分配的open[i][j]anded boolean valuefull[i-1][j]full[i][j]

0

默認情況下,完整數組的所有值都是false。

最初對於i = 1和j = 0。 full [0] [0]的值將爲false。所以無論開放的[] []值是多少,full [1] [0]都會有錯誤的值。

如果我理解你的問題,請糾正我的問題。

+0

其實full是一個已處理的數組,一些索引是真的,有些是假的,它實際上做的是檢查矩陣的任何垂直線是否包含所有真值。 –