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

Java Scanner.nextLine()导致输入学生数量少一个的问题求助

嘿,这个坑我当初学Java Scanner的时候也踩过!太懂你的困惑了😉

问题到底出在哪?

你用scan.nextInt()读取学生数量后,输入回车产生的换行符会留在输入缓冲区里。当你紧接着调用scan.nextLine()时,它会直接读取这个空的换行符,相当于“跳过”了第一个学生的输入环节,最后自然就少收集了一个学生的名字。

而你用scan.nextLine()读全名是完全正确的选择——毕竟scan.next()只能读到空格就停,没法读取带空格的全名嘛。

两种简单的解决办法

方法一:吃掉残留的换行符

在scan.nextInt()之后,额外加一行scan.nextLine()来清空缓冲区里的换行符:

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

        System.out.print("请输入班级学生数量:");
        size = scan.nextInt();
        // 关键:吃掉nextInt()留下的换行符
        scan.nextLine();
        
        students = new String[size];
        for (int i = 0; i < size; i++) {
            System.out.print("请输入第" + (i + 1) + "个学生的全名:");
            students[i] = scan.nextLine();
        }

        // 测试输出
        System.out.println("\n班级学生名册:");
        for (String student : students) {
            System.out.println("- " + student);
        }
        scan.close();
    }
}

方法二:全程用nextLine()读取(更稳妥)

直接用scan.nextLine()读取所有输入,再把学生数量的字符串转成整数,从根源上避免换行符残留的问题:

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

        System.out.print("请输入班级学生数量:");
        // 先读整行,再转换为整数
        size = Integer.parseInt(scan.nextLine());
        
        students = new String[size];
        for (int i = 0; i < size; i++) {
            System.out.print("请输入第" + (i + 1) + "个学生的全名:");
            students[i] = scan.nextLine();
        }

        // 测试输出
        System.out.println("\n班级学生名册:");
        for (String student : students) {
            System.out.println("- " + student);
        }
        scan.close();
    }
}

小补充

如果之后还遇到Scanner的输入问题,记住:nextInt()、nextDouble()这类方法只会读取数字部分,不会处理后面的换行符;而nextLine()会读取从当前位置到换行符的所有内容(包括空内容),所以两者混用的时候一定要注意缓冲区的残留哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:22:02