You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用for循环将方法输入存入数组时遇空指针错误求助

问题:数组未初始化导致无法写入数据

运行时错误提示:

Cannot store to object array because poe_part_2.Task.taskNameArray is null

你声明了多个静态数组变量,但只做了变量声明,没有为数组分配内存空间,这些数组默认值为null,直接通过下标赋值自然会触发空指针错误。另外代码里还有几处拼写错误,也需要同步修正。

解决步骤

  1. 初始化数组:在addTasks方法开头,根据传入的HowManyTasks参数,为所有数组分配对应长度的内存空间
  2. 修正拼写错误:比如public satic void main的satic、taskNumberAray的拼写问题
  3. 调整任务描述逻辑:原代码中先取数组的null值再处理,应该先获取合法输入再存入数组

修改后的核心代码示例

public class Task {
    public static int NumberOfTasks = 0;
    public static String taskNameArray[];
    public static int taskNumberArray[]; // 修正拼写错误
    public static String taskDescriptionArray[];
    public static String developerDetailsArray[];
    public static int taskDurationArray[];
    public static String taskIDArray[];
    public static String StatusArray[];

    public static void main(String[] args) {
        int HowManyTasks = 2; // 示例任务数,可替换为用户输入逻辑
        addTasks(HowManyTasks);
    }

    public static void addTasks(int HowManyTasks) {
        // 初始化所有数组,长度与任务数一致
        taskNameArray = new String[HowManyTasks];
        taskNumberArray = new int[HowManyTasks];
        taskDescriptionArray = new String[HowManyTasks];
        developerDetailsArray = new String[HowManyTasks];
        taskDurationArray = new int[HowManyTasks];
        taskIDArray = new String[HowManyTasks];
        StatusArray = new String[HowManyTasks];

        for(int i = 0; i < HowManyTasks; i++){
            taskNameArray[i] = taskName();
            developerDetailsArray[i] = developerDetails();
            taskDurationArray[i] = taskDuration();
            
            // 修正任务描述处理逻辑:先获取合法输入再存入数组
            String taskDescription;
            while(!checkTaskDescription(taskDescription = takeTaskDescription())){
                System.out.println("Try again");
            }
            taskDescriptionArray[i] = taskDescription;
            
            StatusArray[i] = Status();
            taskNumberArray[i] = taskNumber();
            taskIDArray[i] = createTaskID(NumberOfTasks);
            NumberOfTasks++; // 新增任务后计数自增,避免taskID重复
        }
    }

    // 以下是你需要实现的辅助方法框架(原代码未提供,补全示例)
    private static String taskName() {
        return "Task" + (NumberOfTasks + 1);
    }

    private static String developerDetails() {
        return "Developer" + (NumberOfTasks + 1);
    }

    private static int taskDuration() {
        return 5;
    }

    private static String takeTaskDescription() {
        return "Task description";
    }

    private static boolean checkTaskDescription(String desc) {
        return desc != null && desc.length() <= 50;
    }

    private static String Status() {
        return "To Do";
    }

    private static int taskNumber() {
        return NumberOfTasks + 1;
    }

    private static String createTaskID(int numberOfTasks) {
        return "ID" + numberOfTasks;
    }
}

内容的提问来源于stack exchange,提问作者Simphiwe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 07:12:07