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

Java程序中第二个for循环无法执行问题求助

问题分析与解决

你的第二个循环根本没执行的核心原因是:第一个for循环卡住了。

你定义的数组arrayNumber长度是10,第一个循环的条件是i < arrayNumber.length,意味着它会尝试执行10次,每次都调用scan.nextInt()读取整数。但你只输入了5个数字(5 4 3 2 1),程序会一直停在scan.nextInt()这里等待你输入剩下的5个数字,自然不会走到第二个循环的代码。

另外,就算第一个循环执行完,你的第二个循环逻辑也不符合预期:它从数组最后一位(索引9)倒着打印到索引1,但数组后5位都是默认的0,输出会是一堆0,,完全不是你想要的1,2,3,4,。

修复方案

方案1:读取整行输入,灵活处理实际输入的数字

这种方式无需固定数组长度,能适配任意数量的输入:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        System.out.println("Put number here: ");
        // 读取整行输入并分割为数字字符串数组
        String[] numStrs = scan.nextLine().split(" ");
        int[] arrayNumber = new int[numStrs.length];

        // 正向存入数组并输出
        for (int i = 0; i < arrayNumber.length; i++) {
            arrayNumber[i] = Integer.parseInt(numStrs[i]);
            System.out.print(arrayNumber[i] + ",");
        }
        System.out.println(); // 换行分隔输出

        // 倒序输出(从最后一个元素到第二个元素,匹配你的预期)
        for (int i = arrayNumber.length - 1; i > 0; i--) {
            System.out.print(arrayNumber[i] + ",");
        }

        scan.close();
    }
}

输入5 4 3 2 1后,输出如下:

Put number here: 
5 4 3 2 1
5,4,3,2,1,
1,2,3,4,

方案2:调整循环终止条件,避免等待多余输入

如果坚持用固定长度数组,可通过scan.hasNextInt()判断是否还有输入,防止程序阻塞:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int[] arrayNumber = new int[10];
        int count = 0; // 记录实际输入的数字个数

        System.out.println("Put number here: ");

        // 只读取有输入的数字,最多读取10个
        while (scan.hasNextInt() && count < arrayNumber.length) {
            arrayNumber[count] = scan.nextInt();
            System.out.print(arrayNumber[count] + ",");
            count++;
        }
        System.out.println();

        // 倒序输出实际输入的数字(匹配预期范围)
        for (int i = count - 1; i > 0; i--) {
            System.out.print(arrayNumber[i] + ",");
        }

        scan.close();
    }
}

该方案既解决了输入不足导致的阻塞问题,又能避免打印数组中未赋值的默认0。

关键总结

  • 不要让输入循环的终止条件依赖固定数组长度,除非你能确保用户会输入对应数量的内容;
  • 使用scan.hasNextInt()或整行读取的方式,可灵活适配用户的输入场景;
  • 倒序输出时要明确遍历范围,只针对有实际值的数组元素操作。

内容的提问来源于stack exchange,提问作者Trisha S.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 16:13:42