Java遍历ArrayList:按用户输入逐步显示上/下元素
逐步遍历ArrayList的问题修正方案
嘿,我看你想实现「用户输入2就逐步显示下一个元素,直到列表末尾」的功能,原代码里的循环逻辑确实出了问题,导致输出异常,我来帮你梳理清楚并给出正确的实现:
原代码的核心问题
咱们先看看原代码为啥会出问题:
- 只读取了一次用户输入,没法响应多次输入操作,自然没法一步步切换元素
- 嵌套循环里的
j被手动j++了一次,加上for循环本身的j++,相当于每次跳过一个元素,导致输出混乱 - 没有维护当前显示的元素位置,完全没法追踪“下一个元素”到底是哪一个
正确的实现思路
要实现你要的效果,咱们需要这几个关键点:
- 用一个变量记录当前显示到哪个元素(也就是索引)
- 循环读取用户的输入,每次输入2时,检查索引是否还在列表范围内,然后输出对应元素并更新索引
- 加个退出逻辑,不然程序会一直跑下去
修正后的完整代码
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
相关产品推荐
相关产品推荐

