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

Java循环填充多维数组时首条用户输入被跳过的问题及修复

解决Scanner循环中首次输入被跳过的问题

兄弟,你遇到的这个问题其实是Java Scanner的经典小坑!我给你唠明白咋回事:

当你用input.nextInt()读取批次数量和学生数量时,用户输入数字后会按下回车,这个回车产生的换行符\n并没有被nextInt()读取,而是留在了输入缓冲区里。接下来第一次执行list[j][i] = input.nextLine();的时候,nextLine()会直接把这个残留的换行符读进来,相当于得到了一个空字符串,所以看起来就像是跳过了第一次输入。

给你两种简单的解决办法:

方法一:清空残留的换行符

在每次调用nextInt()之后,额外调用一次input.nextLine()把缓冲区里的换行符“吃掉”,这样后续的nextLine()就能正常读取用户输入的内容了。修改后的代码如下:

import java.util.Scanner;
public class MyClass {
    public static void main(String args[]) {
        Scanner input = new Scanner(System.in);
        System.out.print("number of batches: ");
        int a = input.nextInt();
        input.nextLine(); // 清空换行符
        System.out.print("number of students: ");
        int b = input.nextInt();
        input.nextLine(); // 清空换行符
        String[][] list = new String[a][b];
        String name;
        for (int j = 0; j < a; j++) {
            for (int i = 0; i < b; i++) {
                System.out.print("enter a student: ");
                list[j][i] = input.nextLine();
            }
        }
    }
}

方法二:全程使用nextLine()读取输入

另一种思路是统一用nextLine()读取所有输入,然后把读取到的字符串转换成整数,从根源上避免换行符残留的问题。代码示例:

import java.util.Scanner;
public class MyClass {
    public static void main(String args[]) {
        Scanner input = new Scanner(System.in);
        System.out.print("number of batches: ");
        int a = Integer.parseInt(input.nextLine()); // 读取字符串转整数
        System.out.print("number of students: ");
        int b = Integer.parseInt(input.nextLine());
        String[][] list = new String[a][b];
        String name;
        for (int j = 0; j < a; j++) {
            for (int i = 0; i < b; i++) {
                System.out.print("enter a student: ");
                list[j][i] = input.nextLine();
            }
        }
    }
}

两种方法都能解决你的问题,选哪种看你习惯啦!

内容的提问来源于stack exchange,提问作者yol torres newbie

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 09:23:45