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

Java使用do while循环遍历List触发IndexOutOfBoundsException如何解决

问题根源

你遇到的报错是因为do-while循环的执行特性:先执行循环体,再校验循环条件。你的代码没有提前处理空集合场景,当传入的numbers是长度为0的空List时,程序会直接执行numbers.get(0)尝试读取索引为0的元素,此时就会触发索引越界异常。

修复方案

方案1:增加前置非空判断(推荐)

进入循环前先判断集合是否为空,空集合直接返回false即可,也可以额外增加参数非空校验避免空指针异常,修改后代码如下:

public static boolean hasGreaterDoWhile(List<Integer> numbers, int number) {
    if (numbers == null || numbers.isEmpty()) {
        return false;
    }
    int d = 0;
    do {
        if (numbers.get(d) > number){
            return true;
        }
        d++;
    } while (d < numbers.size());
    return false;
}

其他可选实现

如果没有必须使用do-while的硬性要求,使用普通for循环、增强for循环或者Stream API实现会更简洁,也能天然适配空集合的场景,比如Stream实现示例:

public static boolean hasGreater(List<Integer> numbers, int number) {
    return numbers != null && numbers.stream().anyMatch(n -> n > number);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 01:30:03