Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 奇怪的阵列故障_Java_Arrays_Jframe_Jbutton - Fatal编程技术网

Java 奇怪的阵列故障

Java 奇怪的阵列故障,java,arrays,jframe,jbutton,Java,Arrays,Jframe,Jbutton,我正在用JavaSwing制作一个ludo游戏(针对CPU和人类玩家),使用Jframe。总共有70个移动按钮,我试着制作三个阵列,两个用于固定两名玩家的标记位置,第三个用于固定所有按钮,但似乎有问题 private static javax.swing.JButton B1; private static javax.swing.JButton B10; private static javax.swing.JButton B11; 等等 static JButton[] allButton

我正在用JavaSwing制作一个ludo游戏(针对CPU和人类玩家),使用Jframe。总共有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,因为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();
    }
X类{
private static X;//可能是一个实例。
私有JButton[]按钮;
公共X(){
按钮=新的JButton[70];
用于(int i=0;i

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

在初始化和调用
moverB
之间会发生什么?还有什么可以修改任何一个数组吗?数组不会以任何方式被修改。在你将按钮放入数组之前,你是否初始化
B
变量?以及
System.out.println的输出是什么(allButtons[31]);
System.out.println(positionsB[0]);
?@ChetanKinger Wait.。我认为在Java中
null==null
解析为
true
?问题是Jframe会以这种方式自动声明Jbuttons,有没有办法覆盖它?这很好。可能是静态字段的问题(一次全局)与(JFrae对象的)非静态字段?也许您首先在一个新的protype应用程序中尝试这个概念。制作一个按钮,并使用该代码生成一个按钮数组。