奇怪的阵列故障

时间:2015-06-02 15:49:48

标签: java arrays jframe jbutton

我使用Jframe在java swing中制作了一个ludo游戏(对于CPU和人类玩家)。总共有70个移动按钮,我试图制作三个阵列,两个用于保持两个玩家的令牌位置,第三个用于按住所有按钮,但似乎存在问题。

private static javax.swing.JButton B1;
private static javax.swing.JButton B10;
private static javax.swing.JButton B11;

依旧......

static JButton[] allButtons = {B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, B21, B22, B23, B24, B25, B26, B27,
          B28, B29, B30, B31, B32, B33, B34, B35, B36, B37, B38, B39, B40, B41, B42, B43, B44, B45, B46,
          B47, B48, B49, B50, B51, B52, B53, B54, B55, B56, B57, B58, B59, B60, B61, B62, B63, B64, B65,
          B66, B67, B68, B69, B70};
static JButton[] positionsA = {null, null, null, null};
static JButton[] positionsB = {B40, null, null, null};

现在,问题是此语句返回false

JButton moverB(){
System.out.println(allButtons[31]==positionsB[0]);
}

两个指数均指B40

1 个答案:

答案 0 :(得分:0)

由于all数组以[0]处的B9开头,然后向上计数,[31]应为B40。

然而,两个数组声明中的B40应该已经初始化;我没有看到这样的事情:

private static javax.swing.JButton B40 = new JButton();

事实上,这可能使得上面的阵列技术可能不那么好。

最好立即使用数组启动。如果可能的话,也要避免静电。 有点像:

class X {

    private static X x; // Maybe one instance.

    private JButton[] buttons;

    public X() {
        buttons = new JButton[70];
        for (int i = 0; i < buttons.length; ++i) {
            JButton button = new JButton();
            ...
            buttons[i] = button;
        }
    }

    public static void main(String[] args) {
        X.x = new X();
    }

然后你从一开始就拥有你的数组。