You need to enable JavaScript to run this app. Java实现数组正序(n+1)与while循环逆序(n-1)打印遇无限循环求助
优惠活动
大模型
产品
解决方案
定价
更多

Java实现数组正序(n+1)与while循环逆序(n-1)打印遇无限循环求助

原代码问题定位
  • 循环变量耦合:for循环和while共用同一个i作为游标,没有拆分正序、逆序的独立遍历指针。当i进入while判断分支时,只要满足i < testLoop.length - 1(即小于9)的条件,就会持续执行i--,让i不断向更小的数值偏移,永远满足while的进入条件,完全无法跳出循环。
  • 数组索引越界风险:原for循环定义i从1开始,遍历到i < testLoop.length +1(即i<11,取值范围为1到10),但testLoop的有效索引范围是0-9,当i=10时会直接触发数组越界异常。
  • 计数逻辑错配:需求要求的n+1正序、n-1逆序规则没有对应独立的游标实现,混在同一个i上同时承担正序递增、逆序递减的逻辑,必然出现逻辑冲突。
  • 输出逻辑缺失:原代码仅做单值打印,没有设计正序、逆序元素逐行对应的并排输出流程,即使跳出死循环也无法达到预期效果。
符合需求的实现思路
  • 拆分双独立游标:正序游标承接n+1计数规则,从数组起始位置开始逐次累加,遍历数组原始顺序;逆序游标独立设置,放在while循环中承接n-1计数规则,从数组末尾位置开始逐次递减,遍历数组逆序内容。
  • 逻辑边界隔离:两个循环不共享任何游标变量,彻底避免之前的变量串扰问题。
  • 输出对齐:每一轮遍历中,取当前正序游标对应的元素、当前逆序游标对应的元素,在同一行拼接打印,实现1对应10、2对应9…10对应1的逐行并排效果。
修正后可运行代码
public static void main(String[] args) {
    int[] testLoop = new int[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    // 逆序游标:初始指向数组最后一个元素,对应n=9的位置,符合n-1计数起点
    int reverseCursor = testLoop.length - 1;
    // 正序逻辑:n+1计数,游标从0开始,累加后对应计数1、2...10,遍历原始数组顺序
    for (int forwardCursor = 0; forwardCursor < testLoop.length; forwardCursor++) {
        // 逆序逻辑:用while循环实现n-1计数规则
        while (reverseCursor >= 0) {
            // 逐行打印当前配对的正序、逆序元素
            System.out.println(testLoop[forwardCursor] + " " + testLoop[reverseCursor]);
            // 逆序游标按n-1规则递减
            reverseCursor--;
            // 完成当前行的逆序元素匹配,跳出本轮while,进入下一轮正序遍历
            break;
        }
    }
}

运行输出结果:
1 10
2 9
3 8
4 7
5 6
6 5
7 4
8 3
9 2
10 1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.25 06:36:02