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()); } } }
验证要点
- 确认
add方法名称完全匹配作业要求,参数类型为Message。 - 检查
add方法逻辑:仅当消息内容长度≤280时执行添加,同时处理消息为null的情况避免空指针异常。 - 测试代码中所有变量必须先声明再初始化,比如将未定义的
v替换为实际的Message实例。
内容的提问来源于stack exchange,提问作者user19597374
相关产品推荐
相关产品推荐

