ArrayList<Integer>添加整数后测试失败:预期size为7实际为14求助
为什么我的ArrayList大小变成14而不是7?
兄弟,你猜的完全没错!问题肯定出在你添加元素的逻辑上——你大概率是把每个两位数的数字拆成了单个字符转成int添加进去,比如把10拆成1和0分别调用add(),这样7个两位数就会变成14个元素,正好对应测试提示的expected:<7> but was:<14>。
举个错误的例子(你可能正在这么写)
比如你是通过字符串处理数字,不小心遍历了每个字符:
ArrayList<Integer> lotteryNumbers = new ArrayList<>(); // 假设这是你要添加的7个数字的字符串形式 String[] targetNumbers = {"11", "22", "33", "14", "25", "36", "17"}; for (String numStr : targetNumbers) { // 错误:把每个数字的字符拆分开,逐个添加 for (char c : numStr.toCharArray()) { lotteryNumbers.add(Integer.parseInt(String.valueOf(c))); } }
这段代码执行后,列表里会有14个元素(每个两位数拆成两个单数字),完全符合测试报错的情况。
正确的写法应该是这样
直接把整个字符串转成完整的Integer,一次添加一个元素:
ArrayList<Integer> lotteryNumbers = new ArrayList<>(); String[] targetNumbers = {"11", "22", "33", "14", "25", "36", "17"}; for (String numStr : targetNumbers) { // 正确:把整个字符串转成一个整数添加 lotteryNumbers.add(Integer.parseInt(numStr)); }
如果是手动逐个添加的话,别拆分数字,直接加完整数值:
// 正确的手动添加 lotteryNumbers.add(11); lotteryNumbers.add(22); lotteryNumbers.add(33); // ... 剩下的4个数字同理
关键排查点
重点检查你的drawNumbers方法,看看是不是在生成或解析数字的时候,误将单个数字字符当成了独立的列表元素,而不是把完整的1-39之间的整数作为一个整体添加进去。只要把这个逻辑改过来,列表的size就会变成7,测试就能通过了。
内容的提问来源于stack exchange,提问作者user3425506
相关产品推荐
相关产品推荐

