Java校验ArrayList元素前两位为'ab'并累加求和 代码输出0求修复
代码问题定位与修正
核心错误点
- 判断逻辑的调用对象完全错误:
list.subList(0,2)是ArrayList类的内置方法,作用是截取集合中索引0到2的元素片段,返回值是一个新的List集合,和字符串"ab"做等值比较必然返回false,这是sum始终输出0的根本原因 - 循环逻辑脱节:定义了循环变量
i,但循环体内没有使用i获取当前遍历位置的字符串元素,每次判断的都是固定不变的集合截取结果,和逐元素校验的需求完全不符 - 基础语法疏漏:
sum++语句后缺失分号,main方法中的list变量没有声明、初始化,代码本身无法正常编译运行
if语句调整方案
完全替换原有错误的判断逻辑,按以下规则实现判断:
- 每次循环先取出当前索引位置的单个字符串元素
list.get(i) - 先做边界校验:如果字符串长度小于2,直接跳过判断,避免截取前两位时抛出字符串越界异常
- 调用字符串自身的
substring(0,2)方法截取前两位内容,和"ab"做等值比较,匹配则sum自增
修正后可运行代码
import java.util.ArrayList; class Main { public static void main(String[] args) { // 初始化测试用字符串集合 ArrayList<String> list = new ArrayList<>(); list.add("ab测试1"); list.add("测试ab"); list.add("ab233"); System.out.println(checkAB(list)); } public static int checkAB(ArrayList<String> list) { int sum = 0; for (int i = 0; i < list.size(); i++) { String currentStr = list.get(i); // 增加长度校验避免越界 if (currentStr.length() >= 2 && currentStr.substring(0, 2).equals("ab")) { sum++; } } return sum; } }
上述代码运行后,会正确统计集合中以"ab"开头的字符串数量,测试用例共2个匹配元素,最终输出结果为2。
内容的提问来源于stack exchange,提问作者ayla s
相关产品推荐
相关产品推荐

