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

AP CS实验:initialsArray方法空数组测试失败问题求助

关于initialsArray方法测试中null断言的疑问

我是一名AP CS学生,正在进行数组相关的实验练习。我实现了initialsArray方法,用于将姓名数组中的元素转换为缩写形式(例如:Kent, Clark会转换为KC)。方法核心代码如下:

public String[] initialsArray() {
    String[] initials = new String[numberActive];
    for (int i = 0; i < initials.length; i++) {
        initials[i] = "" + names[i].charAt(names[i].indexOf(",") + 2) +
                names[i].charAt(0);
    }
    return initials;
}

其中numberActive代表数组中已填充元素的数量。

对应的测试方法testInitialsArray中,除了assertEquals(null,w1.initialsArray())这一行外,其余测试均正常通过。我不清楚这行测试的意图,因此求助。测试代码如下:

@Test
public void testInitialsArray()
{
    WaitingList w1 = new WaitingList();
    assertEquals(null,w1.initialsArray());
    w1.addName("Bushell, Greg");
    w1.addName("Kent, Clark");
    w1.addName("Crunch, Captain");
    w1.addName("Fields, Justin");
    w1.addName("Kent, Clark");
    w1.addName("Wayne, Bruce");
    w1.addName("Jordan, Michael");
    String[] actualInitials = w1.initialsArray();
    String[] expectedArrays = {"GB","CK","CC","JF","CK","BW","MJ"};
    for(int i = 0; i < actualInitials.length; i++)
    {
        assertEquals(expectedArrays[i],actualInitials[i]);
    }
}

这行测试的意图

这行测试是为了验证空列表场景:当WaitingList中还没有添加任何姓名时(此时numberActive为0),预期initialsArray方法返回null。

但你当前的实现里,当numberActive为0时,new String[0]会创建一个长度为0的空数组,而不是null,所以这行断言会失败。

解决方式

你有两种选择:

  1. 修改测试代码:更符合Java数组操作的常规是返回空数组而非null,因此可以把这行断言改成验证数组长度为0:
    assertEquals(0, w1.initialsArray().length);
    
  2. 修改实现代码:在方法开头添加判断,当numberActive为0时返回null,匹配测试预期:
    public String[] initialsArray() {
        if (numberActive == 0) {
            return null;
        }
        String[] initials = new String[numberActive];
        for (int i = 0; i < initials.length; i++) {
            initials[i] = "" + names[i].charAt(names[i].indexOf(",") + 2) +
                    names[i].charAt(0);
        }
        return initials;
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 14:40:47