You need to enable JavaScript to run this app. Java校验ArrayList元素前两位为'ab'并累加求和 代码输出0求修复
优惠活动
大模型
产品
解决方案
定价
更多

Java校验ArrayList元素前两位为'ab'并累加求和 代码输出0求修复

代码问题定位与修正

核心错误点

  • 判断逻辑的调用对象完全错误:list.subList(0,2)是ArrayList类的内置方法,作用是截取集合中索引0到2的元素片段,返回值是一个新的List集合,和字符串"ab"做等值比较必然返回false,这是sum始终输出0的根本原因
  • 循环逻辑脱节:定义了循环变量i,但循环体内没有使用i获取当前遍历位置的字符串元素,每次判断的都是固定不变的集合截取结果,和逐元素校验的需求完全不符
  • 基础语法疏漏:sum++语句后缺失分号,main方法中的list变量没有声明、初始化,代码本身无法正常编译运行

if语句调整方案

完全替换原有错误的判断逻辑,按以下规则实现判断:

  1. 每次循环先取出当前索引位置的单个字符串元素list.get(i)
  2. 先做边界校验:如果字符串长度小于2,直接跳过判断,避免截取前两位时抛出字符串越界异常
  3. 调用字符串自身的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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.07 07:45:03