2010-07-13 87 views
2

我試圖編寫一個方法,它根據loadBoard(NUMBER_HERE)中的一個數字加載映射;但我得到 '不可達statment' 就行了Java無法訪問的語句

return board; 

這裏是我的代碼:

public int[][] loadBoard(int map) { 
    if (map == 1) { return new int[][] { 

{2,2,24,24,24,24,24,3,3,0,0,0,1 }, 

{ 2,2,24,23,23,23,24,1,3,0,0,0,1 }, 

{ 1,1,24,23,23,23,24,1,3,3,3,3,1 }, 

{ 1,1,24,24,23,24,24,1,1,1,1,3,1 }, 

{ 1,1,1,1,7,1,1,1,1,1,1,3,1 }, 

{ 5,1,1,1,7,7,7,7,7,1,1,1,1 }, 

{ 6,3,3,1,3,3,3,1,7,7,7,3,1 }, 

{ 6,3,3,1,3,1,1,1,1,1,7,1,1 }, 

{ 3,3,1,1,1,1,1,1,1,1,7,1,1 } }; 

}else{ 

return new int[][] { 

{ 1,1,1,1,1,24,1,1,1,1,1,1,1 }, 


{ 1,1,1,1,1,24,1,1,1,1,1,1,1 }, 

{ 1,1,1,1,1,24,1,1,24,1,1,1,1 }, 

{ 1,1,1,1,1,24,1,1,24,1,1,1,1 }, 

{ 1,1,7,1,1,24,24,24,24,1,1,1,1 }, 

{ 1,1,7,1,1,24,1,24,1,1,1,1,1 }, 

{ 1,1,1,1,1,24,1,1,1,1,1,1,1 }, 

{ 1,1,1,1,1,24,1,1,1,1,1,1,1 }, 

{ 1,3,3,1,1,24,1,1,1,1,1,1,1 }, 

}; } 

return board; } 

我在做什麼錯?

+0

正確縮進,然後問題更容易看到。 – starblue 2010-07-13 07:39:42

回答

7

你的最後一行return board;

如果你看一下你的代碼有:

if (condition) 
    return /* Some things go here */ 
else 
    return /* The rest go here */ 
return /* But who goes here? */ 

答案是去除Unreachable行代碼,因爲它簡直是毫無意義的。

+0

那麼..我該怎麼辦?我卡住了;因此我尋求幫助。 :( – nn2 2010-07-13 01:13:39

+0

我看到我的錯誤,如果這就是你想要得到的,但我不知道如何解決它 – nn2 2010-07-13 01:14:08

+0

更改'return new in [] []'to'board = new int [] [ ]',然後返回板子 – samitgaur 2010-07-13 01:16:18

1

在每個「if」和「else」塊中,都會返回一個值。由於執行路徑將始終進入這些塊之一,因此您將始終從其中一個塊返回,並且永遠不會進入「返回板」。

1

基本上你有這樣一個規律:

if(condition) 
    return val_a; 
else 
    return val_b; 

return val_c; 

因爲你的「其他」是無條件的,是「如果」或「其他」是保證執行。所以最後的回報是無法訪問的。

相關問題