2013-02-10 85 views
0

「死碼」和二維數組的問題我有在開發Java中下面的代碼有幾個問題:局部變量,在Java

setPos(x, y); 
for (int i = 0; x < size; i++) { 
    for (int j = 0; y < size; j++) { 
     if (board[x][y] == 'K') 
     { 
      System.out.println("You've found a key! CONGRATS!"); 
      return true; 
     } 

的Eclipse注意到我,ij,局部變量,他們沒有被使用:The value of the local variable i is not used。如果我改變i,寫x相反,它告訴我,我不停地重複變量。

j++被標記爲dead code

另外,我有搜索在對角線上一個二維數組的具體類型的元素,我一直在嘗試2這個for循環,同上,但沒有結果呢。

希望你能幫助我,在此先感謝!

+2

你的退出條件'如果(板[X] [Y] == 'K')'不依賴於'i'或'j' ... – assylias 2013-02-10 11:18:47

回答

0

的Eclipse注意到我,ij,局部變量,它們不習慣

那是因爲你不使用它們的。您分配他們的價值觀,和你後來增加(增加)的值,但是你從來沒有使用他們任何東西。

j++被標記爲「死碼」(?)

出於同樣的原因,代碼遞增的j的價值,但從未使用過j,所以代碼什麼也不做。 「死代碼」是指沒有目的或從未運行的代碼。


你的循環沒有多大意義。例如:

for (int i = 0; x < size; i++) { 
for循環,(在這種情況下 i)控制變量應出現在

通常所有三個for聲明的部分(初始化,測試,和增量)的 ,是這樣的:你不這樣做,你只使用在初始化和增量i,從來沒有在測試(x < size

for (int i = 0; i < size; i++) { 
// Change here -^ 

不過。您的循環與j同樣如此。

同樣地,除非有一些改變xy值,和/或size,那麼你的循環要麼永遠不會運行(因爲xy已經>= size),一旦運行(因爲它發生board[x][u] == 'K') ,或者他們會永遠運行(因爲xy< size,因爲沒有任何變化,他們只是繼續循環...)。

+0

我剛剛在方法內部包含了條件,所以x和y不能大於size,所以for循環不再需要。非常感謝! – Niconoid 2013-02-10 11:44:16

0

看看這個:

setPos(x, y); 
     if (board[x][y] == 'K') //no i or j so they are unused. 
     { 
      System.out.println("You've found a key! CONGRATS!"); 
      return true; 
     } 

If I change the i and write the x instead, it tells me that I'm repeating the variable.

因爲X已經是一個變量(你的函數參數)。所以你不能再次聲明。

dead code:是對程序沒有任何影響的代碼。 Dead code


注:這不是你的問題的解決方案(因爲我不知道)。這只是爲了告訴你這個錯誤。

0

Eclipse是給你一個提示錯誤所在:

for (int i = 0; x < size; i++) { 
    for (int j = 0; y < size; j++) { 

您遍歷ij,但你指定x < sizey < size作爲條件。因此,你永遠不會使用ij的值,因此j++i++是死碼。

如果你真的想用一個循環,你應該使用你在for循環的條件下使用迭代變量:

for (int i = 0; i < size; i++) { // i instead of x 
    for (int j = 0; j < size; j++) { // j instead of y 
0

而且,我必須尋找一個具體類型的元素在二維數組的對角線上,我一直在用2 for循環來嘗試這個,就像上面那樣,但是沒有結果。

爲什麼不使用單環for,像這樣:

for(int i = 0; i< size; i++) 
    if(board[i][i] == 'K') 
    { 
     System.out.println("You've found a key! CONGRATS!"); 
     return true; 
    }