将值分配给用户定义的类

时间:2016-11-02 09:47:34

标签: java pointers exception javafx null

我试图创建一个简单的JavaFX应用程序,在两个屏幕之间切换,一个可以更改存储的变量,一个只显示,我在main方法中定义了一个函数,只返回nullpointerexception在错误日志中编译项目,它在行上写着

taskList[i].setTaskName(taskNames[i]);

我尝试添加一个if语句,类似于getTechAssigned方法的部分,因为这个变量会不断变化,而taskName变量将保持不变。我只是不确定它为什么会出现,这里是完整的代码:

变量声明

Button assignTask, finalizeTask;
    FlowPane pane1, pane2;
    Scene scene1, scene2;
    Stage theStage;
    String[] taskNames = {"Notes", "Paging", "Event Mgmt - Early", 
                          "Event Mgmt -Late", "Airhub 2DA", "Airhub 1DA"
                          "GSSD", "GSSI", "GSSRR", "Publishing",
                          "Check Holdovers", "Radio", "PTI Walkoff", "Phones
                          1300"};
    task[] taskList = new task[taskNames.length];
    GridPane taskGrid = new GridPane();

导致错误的函数:

public void initializeTasks() {
    for (int i = 0; i < taskList.length; i++) {
        taskList[i].setTaskName(taskNames[i]);
        Text t = new Text(taskList[i].getTaskName());
        taskGrid.setRowIndex(t, i);
        taskGrid.setColumnIndex(t, 0);

        if(taskList[i].getTechAssigned() == null) {
            taskList[i].setTechAssigned("Not Assigned");
            }

        Text r = new Text(taskList[i].getTaskName());
        taskGrid.setRowIndex(r, i);
        taskGrid.setColumnIndex(r, 1);
        }

    }

2 个答案:

答案 0 :(得分:0)

您创建了阵列,但没有放入任何内容。您的数组包含taskNames.length个元素,所有元素都为null。

你应该初始化数组的所有元素,如:

taskList[i] = new task();

在您设置taskList[i].setTaskName(taskNames[i]);

的行之前

答案 1 :(得分:0)

 task[] taskList = new task[taskNames.length];

taskList目前有11个null元素,因为你在null时使用setTaskName给出错误。

首先将对象添加到taskList然后使用它。

taskList[i]=new task();
taskList[i].setTaskName(taskNames[i]);