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

MOOC Java第1部分第6节练习3测试不通过求助

问题解决方案

核心错误分析

  • 方法命名不符合要求:作业要求实现add(Message)方法,但你写成了addMessage,测试用例是按add方法名调用的,会因找不到方法导致测试失败。
  • 测试代码变量未定义:测试代码里的变量v未声明初始化,直接使用会触发编译错误。

修正后的代码示例

1. Message类(标准实现)

public class Message {
    private String content;

    public Message(String content) {
        this.content = content;
    }

    public String getContent() {
        return content;
    }
}

2. 修正后的MessagingService类

import java.util.ArrayList;
import java.util.List;

public class MessagingService {
    private List<Message> messages;

    // 无参构造方法
    public MessagingService() {
        this.messages = new ArrayList<>();
    }

    // 符合要求的add方法,仅添加内容≤280字符的消息
    public void add(Message message) {
        if (message != null && message.getContent().length() <= 280) {
            messages.add(message);
        }
    }

    // 返回消息列表的方法
    public List<Message> getMessages() {
        // 返回新列表避免外部修改原列表(可选,依作业要求调整)
        return new ArrayList<>(messages);
    }
}

3. 修正后的测试代码示例

public class Main {
    public static void main(String[] args) {
        MessagingService service = new MessagingService();
        // 声明并初始化消息变量,替换未定义的v
        Message validMsg = new Message("这是一条符合长度要求的测试消息");
        Message tooLongMsg = new Message("a".repeat(300)); // 超过280字符的消息

        service.add(validMsg);
        service.add(tooLongMsg);

        // 验证结果
        System.out.println("有效消息数量:" + service.getMessages().size()); // 应输出1
        for (Message msg : service.getMessages()) {
            System.out.println(msg.getContent());
        }
    }
}

验证要点

  1. 确认add方法名称完全匹配作业要求,参数类型为Message。
  2. 检查add方法逻辑:仅当消息内容长度≤280时执行添加,同时处理消息为null的情况避免空指针异常。
  3. 测试代码中所有变量必须先声明再初始化,比如将未定义的v替换为实际的Message实例。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 06:45:55