如何使用 "Do While" 循环遍历列表

How to use a "Do While" loop to iterate through a list

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

(仅JAVA) P.s 这是我试过的一个函数,为了检查第一个参数,如果它包含一个大于第二个参数的数字,那么它将 return 为真,否则为 flase。 请注意,它正在使用 do while 循环。我只是不知道这段代码的哪一部分做错了,因为系统一直告诉我“java.lang.IndexOutOfBoundsException:索引 0 超出长度 0 的范围”。 谢谢你,任何提示都会非常有用。

您的整数列表是空的。您无法访问空列表的索引:

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

一个do-while控制块的工作原理如下:

  1. 执行do
  2. 检查条件。如果成立,return 到 (1)

注意这个流程的顺序。与标准 while 不同,do-while 将始终在检查条件之前执行一次迭代。因此,对于空列表,您将始终尝试访问 table 的 0 索引元素,该元素不存在,因此会出现错误。您可以使用 while 循环来避免这种情况:

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

你应该检查集合是否为空

像这样

    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;