Java列表数字索引查询:代码循环异常修复求助
修复Java列表索引查询的重复输出问题
问题说明
原程序需要实现:
- 接收用户输入的数字构建列表,输入
-1时停止输入 - 接收待查询数字,输出该数字在列表中的所有索引,未找到则不输出
但现有代码存在两个关键错误,导致查询时输出大量重复/错误内容:
- 无论当前元素是否匹配查询值,都会执行输出语句,不匹配的位置也会输出错误索引
- 使用
list.indexOf(src)只会返回第一个匹配元素的索引,无法获取后续的匹配位置
修复后的代码
import java.util.ArrayList; import java.util.Scanner; public class IndexOf { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); ArrayList<Integer> list = new ArrayList<>(); while (true) { int input = Integer.valueOf(scanner.nextLine()); if (input == -1) { break; } list.add(input); } System.out.println("Search for? "); int src = scanner.nextInt(); // 修复后的索引查询逻辑 for(int i = 0; i < list.size(); i++){ int num = list.get(i); if(src == num){ // 直接用循环变量i作为当前匹配元素的索引 System.out.println(src + " is at index " + i); } } } }
修复要点
- 移除多余变量:删掉了没用的
ind变量,不需要额外存储索引 - 控制输出时机:只在元素匹配查询值时才执行输出语句,不匹配的位置直接跳过,避免无效输出
- 正确获取索引:用循环变量
i代替list.indexOf(src),因为i本身就是当前遍历元素的索引,能精准获取所有匹配位置的索引
测试验证
输入序列:1、2、3、3、4、-1,查询3时,会正确输出:
3 is at index 2 3 is at index 3
内容的提问来源于stack exchange,提问作者Amin Mousavi
相关产品推荐
相关产品推荐

