2013-07-09 73 views
0
for(int i =0; i<8;i++){ 
    for(int j =0; j<8;j++){ 
    Ratsuk.getNewtablero().getMesa(i,j).setBackground(matrizcolor[i][j]); 
    if (Ratsuk.getNewtablero().getMesa(i,j).getBackground()==Color.lightGray); 
    Ratsuk.getNewtablero().getMesa(i,j).setEnabled(false); 
    } 
} 

Ratsuk.getNewtablero().getMesa(i,j)用於調用newtablero中的JButton 2d數組,matrizcolor是相同大小的2d數組。如果裏面有什麼不對嗎?

當它運行時,該數組中的所有按鈕不僅禁用了灰色的按鈕。任何1可以解釋我爲什麼?

+7

如果您可以修復縮進,它會幫助我們看到這裏發生了什麼。 – BlackVegetable

+5

這個問題似乎是脫離主題,因爲這是一個錯字問題 – RiaD

+0

是的我的壞我犯了一個非常愚蠢的錯誤-_- – MAG

回答

10

內部if語句後面有一個分號。

if (Ratsuk.getNewtablero().getMesa(i,j).getBackground()==Color.lightGray); 

這會導致每次執行下一行。請記住,編譯器會將(1)單個語句或(2)單個塊與任何if語句關聯。在這種情況下,編譯器將單個語句與該if語句相關聯,但單個語句僅僅是一個字面上不會執行任何操作的分號。無論if語句的true或false值

Ratsuk.getNewtablero().getMesa(i,j).setEnabled(false); 

:分號聲明「執行」後,程序將繼續正常通過執行下一行。刪除分號並解決您的問題。

+6

並使用'equals'來比較顏色。 – Maroun

+0

@MarounMaroun我認爲如果在優化階段將被刪除,但我不確定。 –

+1

@GrijeshChauhan我懷疑沒有,除非編譯器可以明確確定調用鏈中沒有任何方法有任何副作用。 –