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

Java遍历ArrayList:按用户输入逐步显示上/下元素

逐步遍历ArrayList的问题修正方案

嘿,我看你想实现「用户输入2就逐步显示下一个元素,直到列表末尾」的功能,原代码里的循环逻辑确实出了问题,导致输出异常,我来帮你梳理清楚并给出正确的实现:

原代码的核心问题

咱们先看看原代码为啥会出问题:

  • 只读取了一次用户输入,没法响应多次输入操作,自然没法一步步切换元素
  • 嵌套循环里的j被手动j++了一次,加上for循环本身的j++,相当于每次跳过一个元素,导致输出混乱
  • 没有维护当前显示的元素位置,完全没法追踪“下一个元素”到底是哪一个

正确的实现思路

要实现你要的效果,咱们需要这几个关键点:

  1. 用一个变量记录当前显示到哪个元素(也就是索引)
  2. 循环读取用户的输入,每次输入2时,检查索引是否还在列表范围内,然后输出对应元素并更新索引
  3. 加个退出逻辑,不然程序会一直跑下去

修正后的完整代码

import java.util.ArrayList;
import java.util.Scanner;

public class ProbaCuLista {
    public static void main(String[] args) {
        ArrayList<String> animals = new ArrayList<>();
        animals.add("fox");
        animals.add("cat");
        animals.add("dog");
        animals.add("rabbit");

        // 保留你原来的for-each输出所有元素的功能
        System.out.println("所有动物列表:");
        for (String animal : animals) {
            System.out.println(animal);
        }

        Scanner scanner = new Scanner(System.in);
        int currentIndex = 0; // 用这个变量追踪当前要显示的元素位置

        System.out.println("\n请输入2显示下一个元素,输入其他数字退出:");
        while (true) {
            int input = scanner.nextInt();
            if (input == 2) {
                // 先检查是不是已经到列表末尾了
                if (currentIndex < animals.size()) {
                    System.out.println(animals.get(currentIndex));
                    currentIndex++; // 索引往后挪一位,准备下一次显示
                } else {
                    System.out.println("已经到列表最后一个元素啦!");
                    break; // 到末尾就退出循环,也可以改成重置索引实现循环显示
                }
            } else {
                System.out.println("程序退出!");
                break;
            }
        }
        scanner.close();
    }
}

代码运行效果说明

  • 第一次输入2:输出fox(第一个元素)
  • 第二次输入2:输出cat
  • 第三次输入2:输出dog
  • 第四次输入2:输出rabbit
  • 第五次输入2:提示“已经到列表最后一个元素啦!”并退出
  • 输入任何非2的数字:直接退出程序

这样就完全符合你的需求啦~

内容的提问来源于stack exchange,提问作者didi B

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:35:08