Java数组对象“null”

时间:2016-03-10 20:36:06

标签: java arrays

我的整数数组有问题,例如一个。我有类对象的类,我有不同的类,这些对象在按钮点击后递增,但是我得到了“null”值和NullPointerExpection。我把这一切都工作了,当我讨厌的时候,因为例如“int Money;”,但我的代码是12000行,我试图让它更容易阅读,等等。但现在使用数组它们不起作用。 我使用For Loops 来处理这个问题,但我理解的是,我无法使用循环,因为我想稍后从savefile加载这些值。

CarMainClass(这个不起作用):

  package Clicker;

    public class MainHolder {

    public Integer main[] = new Integer[8];

    public MainHolder(){


    }

    public void MainMaker(int k){


    }

    public void MakeMain(){

        MainMaker(0); // Money

        MainMaker(0); // Money Clicks

        MainMaker(0); // Boxes

        MainMaker(0); // Boxes Clicks

        MainMaker(1); // Boxes Level

        MainMaker(1); // Player Level

        MainMaker(1); // Garage Level

        MainMaker(0); // Garage Slots

    }
}

CarMainClass(适用于for循环):

 package Clicker;

    public class MainHolder {

    public Integer main[];

    public MainHolder(){

        main = new Integer[8];

                for(int i=0; i <8;i ++){
                    if(i ==4 || i ==5 || i ==6){
                        MainMaker(1,i);

                    }else{
                        MainMaker(0,i);
                    }
                }   

    }

    public void MainMaker(int k,int p){

        main[p] = k;

    }

    public void MakeMain(){

    }
}

和按钮:

//Money Button Click
    if(ae.getSource() == jbtnMoney) {

        CarMain.main[0] += 1;   
        MoneyLabel.setText("Money: " + CarMain.main[0]);
        CarMain.main[1] += 1;     
        MoneyClicksLabel.setText("Money Clicks: " + CarMain.main[1]);
    }
工作时

应用程序GUI: WorkingImage

应用程序GUI无法正常工作时+错误: NoWorkingImage

1 个答案:

答案 0 :(得分:0)

它是CarMainClass的完整代码吗?似乎MainMaker方法不包含任何可执行代码,所以当你调用它时它不会做任何事情。单击按钮即可。 初始化的数组为空 - 仅包含空值,这就是它返回null的原因 - 当您在GUI上引用该值时。 您需要将其更改为此(我假设每个数字都描述了对象):

包Clicker;

public class MainHolder {

public Integer main[] = new Integer[8];

public MainHolder(){
  MakeMain();
}
public void MainMaker(int k,int p){

    main[p] = k;

}
public void MakeMain(){

    MainMaker(0,0); // Money

    MainMaker(0,1); // Money Clicks

    MainMaker(0,2); // Boxes

    MainMaker(0,3); // Boxes Clicks

    MainMaker(1,4); // Boxes Level

    MainMaker(1,5); // Player Level

    MainMaker(1,6); // Garage Level

    MainMaker(0,7); // Garage Slots

}

}

但是你使用循环的解决方案实际上更有意义。为什么你不能将它存储到文件中?您应该定义用于将应用程序描述为常量的整数 - 最终Integer money = 0,依此类推。 您可以将值存储到文件中,并使用索引将值映射到相应的值。或者将其存储为地图。