2013-10-19 28 views
0

我基本上寫了一個布爾數組[x] [y],x,y是座標,如果它的確存在一個炸彈。getter爲一個布爾數組[] []

林具有與該吸氣麻煩,

我到目前爲止

boolean[][] bombArray = new boolean[Total_Columns][10]; 

for(x=0,x<Total_Colmns,x++){ 
    bombArray[x][0] = true; 
    } 

public boolean getBombArray(int x,int y){ 
    if(bombArray[x][y] .equals(true){ 
    return true; 
    } 
    else{ 
    return false; 
    } 
} 

我的主要看起來像這樣

main() 
boolean isBomb = myPanel.getBombArray(x,y) //x and y being the cursor coordinates 
if(isBomb){ 
.... 
.... 
.... 
.... 
{ 
else{ 
.... 
.... 
.... 
} 

基本上電網將是這樣

 
********* 
......... 
......... 
......... 
......... 
......... 
......... 
......... 
......... 

可是我得到的是不工作的,它不斷拋出異常

+0

有什麼例外? – AsemRadhwi

+1

請注意:沒有理由使用getBombArray中的條件,只需返回該位置的值:'return bombArray [x] [y];' –

回答

3

這條線:

if(bombArray[x][y] .equals(true){ 

缺少括號之前一個右括號。

你的函數的正確版本是:

public boolean getBombArray(int x,int y){ 
    // bombArray[x][y] has type 'boolean', which isn't an object, it's a primitive 
    // (don't use .equals() on primitives) 
    if(bombArray[x][y] == true){ 
     return true; 
    } else{ 
     return false; 
    } 
} 

但是你可以很顯著簡化這個東西我覺得是更清楚一點:

public boolean getBombArray(int x,int y){ 
    // bombArray[x][y] is true if there's a bomb, false otherwise 
    return bombArray[x][y]; 
} 
3

你應該得到一個編譯時間由於這裏缺少括號導致的誤差:

if(bombArray[x][y] .equals(true) 
    ... 

整個函數bo dy應該是:

return bombArray[x][y]; 
+0

另外,'boolean'沒有'.equals '函數(雖然'布爾'確實) –

+0

另一個編譯時錯誤。謝謝@MarkElliot。 – Tarik

1

異常發生在運行時。我懷疑這個代碼能夠拋出異常,因爲它不能編譯。讓我們通過它:

for(x=0,x<Total_Colmns,x++){ 
    bombArray[x][0] = true; 
} 

以匹配您的數組聲明你想Total_Columns在這裏,而不是Total_Colmns。逗號應該是分號,而x變量可能是未聲明的。你的循環應該是這樣的:

for (int x = 0; x < Total_Columns; x++) { 
    bombArray[x][0] = true; 
} 

另外,如果你沒有複製和粘貼代碼單獨片段到你的問題,好像你的循環是任何方法之外。它不會在那裏工作。它可能屬於你的類的構造函數。

在吸氣您有:

if(bombArray[x][y] .equals(true){ 
    return true; 
} else { 
    return false; 
} 

boolean是原始類型,而不是一個Object,所以它不具有equals方法。您只能使用bombArray[x][y] == true。您還錯過了if聲明中的關閉)。實際上,因爲你的數組元素已經是一個布爾你可以直接返回它:

public boolean getBombArray(int x, int y) { 
    return bombArray[x][y]; 
} 

如果從傳遞光標位置獲得ArrayIndexOutOfBoundsException S,你可能想限制你的吸附劑中的X & y座標。例如:

if (x < 0 || x >= bombArray.length || y < 0 || y >= bombArray[x].length) return false; 

如果仍然出現錯誤和異常情況,請顯示真實的錯誤消息。它們包含幫助您解決問題的信息。 「不工作」是不夠的信息。

+0

現在感謝它的工作,沒有例外,但它的行爲總是像isBomb = false,我可以發佈我的代碼,看看你能否幫我找到某種錯誤? – user2896762

+0

公共布爾getBombArray(INT的x,int y)對{ \t \t如果(X < 0 || x > TOTAL_COLUMNS - 1 ||ý< 0 || y > TOTAL_ROWS - 2){ \t \t \t返回假; \t \t} \t \t否則{ \t \t \t返回bombArray [X] [Y]; \t \t} \t \t \t} – user2896762

+0

@ user2896762我建議你打印出所有的X和你正在閱讀,以確保這些都是正確的年。你是否將「光標位置」除以每個網格的大小? – Boann