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 配列です。

これを実行すると、ライトグレーのボタンだけでなく、その配列のすべてのボタンが無効になります。なぜ私に説明できますか?

4

1 に答える 1

10

内部の if ステートメントの後にセミコロンがあります。

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

これにより、次の行が毎回実行されます。コンパイラは、(1) 単一のステートメントまたは (2) 単一のブロックを if ステートメントに関連付けることに注意してください。この場合、コンパイラは 1 つのステートメントをその if ステートメントに関連付けていますが、その 1 つのステートメントは文字通り何もしないセミコロンにすぎません。セミコロン ステートメントが「実行」された後、プログラムは次の行を実行して通常どおり続行します。

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

if ステートメントの true または false の値に関係なく。セミコロンを削除すると、問題が修正されます。

于 2013-07-09T17:34:52.880 に答える