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

Java数组输入时循环重复打印Enter the values冗余行问题求解

问题根因

你将Enter the values提示的打印逻辑放在了和数组长度相同次数的for循环内,同时Scanner.nextInt()方法会自动跳过输入缓冲区中的空格、换行等分隔符,无需阻塞等待用户输入即可直接读取缓冲区中已有的数值:

  • 你输入数组大小为4后,一次性输入了1 2 3 4四个数值,此时输入缓冲区已经存在4个可读取的int值
  • 第一次循环打印提示后读取了数值1,剩下3次循环不需要阻塞等待输入,直接执行打印提示的代码再读取缓冲区剩余的数值,就出现了多打印三次提示的异常表现。

解决方案

根据你的使用场景可以二选一:

方案1:支持一次性输入所有数值(符合你给出的期望输出效果)

将打印提示的代码移到循环外,只打印1次即可,修改后的main方法代码如下:

public static void main(String []args) 
{
    Scanner x = new Scanner (System.in);
    int num;        
    System.out.print("Enter the size: ");
    num = x.nextInt();

    int array [] = new int [num];
    // 提示移到循环外部,仅打印一次
    System.out.print("Enter the values: ");
    for(int i=0;i<num;i++){
        array[i] = x.nextInt();
    }

    System.out.print("Father = "+father(array, num)+", Son = "+son(array, num));
    x.close();
}

修改后运行输出和你给出的期望结果完全一致。

方案2:逐次输入单个数值

如果你的业务要求每次输入一个数值再提示下一次输入,只需要引导用户每次输入单个数值后按下回车键即可,此时输入缓冲区每次仅存在一个可读取的int值,每次循环都会阻塞等待用户输入,不会出现重复打印提示的问题,运行效果如下:

Enter the size: 4
Enter the values: 1
Enter the values: 2
Enter the values: 3
Enter the values: 4
Father = 9, Son = 6

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 20:09:03