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

Java使用ListIterator反转列表跳位打印字符串代码错误求助

Java列表遍历打印问题解决方案

需求确认

先明确核心执行逻辑:

  • 第一阶段:正序遍历给定字符串列表,跳过每第2个元素(即取第1、3、5...位元素)
  • 第二阶段:遍历原列表的反转序列,同样跳过每第2个元素
  • 两阶段得到的字符串拼接后整行输出

示例验证:
输入["a","b","c","d"]:正序取a、c → "ac",反转序列是d、c、b、a,取d、b → "db",拼接后为"acdb",符合要求
输入["a","b","c"]:正序取a、c → "ac",反转序列是c、b、a,取c、a → "ca",拼接后为"acca",符合要求

现有代码核心问题

  1. 直接调用remove()修改了输入的原列表,会破坏原始数据,也不符合需求逻辑
  2. 遍历条件while(stringWithIterator.nextIndex() == 1)完全错误,只能遍历到索引为1的元素,无法处理完整列表
  3. 缺少逆序遍历、二次跳过第2个元素的逻辑,也没有做两阶段结果的拼接

实现思路

  1. 不要修改原输入列表,单独用StringBuilder拼接输出结果,避免影响原数据同时提升拼接效率
  2. 第一阶段正序遍历列表,用计数器标记当前是第几个元素,奇数位元素追加到StringBuilder
  3. 第二阶段用ListIterator实现逆序遍历:初始化迭代器时传入列表size作为起始位置,通过hasPrevious()和previous()方法倒序取元素,同样用计数器筛选奇数位元素追加到StringBuilder
  4. 最后直接打印拼接完成的字符串即可

正确代码示例

import java.util.List;
import java.util.ListIterator;

public class ListPrintStrings {
    public static void printStrings(List<String> strings) {
        StringBuilder result = new StringBuilder();
        // 第一阶段:正序遍历,跳过第2个元素
        int count = 0;
        for (String s : strings) {
            count++;
            if (count % 2 == 1) {
                result.append(s);
            }
        }
        // 第二阶段:逆序遍历(等价于遍历反转后的列表),跳过第2个元素
        count = 0;
        ListIterator<String> iterator = strings.listIterator(strings.size());
        while (iterator.hasPrevious()) {
            count++;
            String current = iterator.previous();
            if (count % 2 == 1) {
                result.append(current);
            }
        }
        // 输出最终结果
        System.out.print(result.toString());
    }
}

代码验证

针对示例输入["a","b","c","d"]:

  • 正序计数1:a→追加,2:b→跳过,3:c→追加,4:d→跳过 → 第一部分"ac"
  • 逆序取元素顺序为d、c、b、a,计数1:d→追加,2:c→跳过,3:b→追加,4:a→跳过 → 第二部分"db"
  • 拼接输出"acdb",符合要求

针对示例输入["a","b","c"]:

  • 正序计数1:a→追加,2:b→跳过,3:c→追加 → 第一部分"ac"
  • 逆序取元素顺序为c、b、a,计数1:c→追加,2:b→跳过,3:a→追加 → 第二部分"ca"
  • 拼接输出"acca",符合要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 00:54:03