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

Java测验应用多选题输出Null值问题求助

Java测验应用多选题显示Null问题修复方案

问题原因

  1. 多选题实例创建后,选项数组newchoice从未被填充,始终是null。
  2. initQuestion()方法里错误调用了未实现的addChoices()方法,而非正确的addChoice()方法。
  3. 直接用数组默认toString输出,格式生硬且暴露null值。

修复代码及说明

修改后的MultipleChoiceQuestion.java

import java.util.Arrays;

public class MultipleChoiceQuestion extends Question {
    private int count = 0;
    private final String[] newchoice = new String[4];

    public MultipleChoiceQuestion(String text, String cho1, boolean bool1,
                                  String cho2, boolean bool2,
                                  String cho3, boolean bool3,
                                  String cho4, boolean bool4) {
        super(text);
        // 直接调用addChoice填充选项,无需额外存储cho1-cho4变量
        addChoice(cho1, bool1);
        addChoice(cho2, bool2);
        addChoice(cho3, bool3);
        addChoice(cho4, bool4);
    }

    public void addChoice(String choice, boolean isCorrect) {
        if (count < newchoice.length) {
            this.newchoice[count] = choice;
            if (isCorrect) {
                super.setCorrectResponse(choice);
            }
            count++;
        }
    }

    @Override
    public String toString() {
        StringBuilder sbf = new StringBuilder(super.toString());
        sbf.append("\n");
        // 用A、B、C、D编号显示选项,替代数组默认格式
        char optionLabel = 'A';
        for (String choice : newchoice) {
            if (choice != null) {
                sbf.append(optionLabel).append(". ").append(choice).append("\n");
                optionLabel++;
            }
        }
        return sbf.toString();
    }
}

关键修改点

  1. 移除了冗余的cho1-cho4、bool1-bool4变量和无用的initQuestion()、addChoices()方法,直接在构造函数中调用addChoice()填充选项。
  2. 优化toString()方法,生成带A/B/C/D编号的选项列表,避免显示null。
  3. 在addChoice()中增加数组边界判断,防止索引越界。

主类QuizTester.java无需额外修改

创建MultipleChoiceQuestion实例时,构造函数已完成选项初始化,直接调用toString()即可显示完整题目和选项。

测试后,第4、5题会正常显示所有选项,不再出现null值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 07:01:25