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

Java中使用Scanner获取数字后读取字符串列表的问题咨询

问题分析与解决方案

首先得搞清楚你遇到的问题根源:当你用input.nextInt()读取数字时,它只会读取输入的数字部分,而用户按下的**回车键(换行符)**会留在Scanner的输入缓冲区里。接下来调用input.nextLine()时,它会直接读取这个残留的换行符,导致nameList被赋值为空字符串,程序就直接跳到了读取lastName的步骤,完全没给你输入名字列表的机会。

那第一个输入改用nextLine()获取字符串是否可行?当然可以,但你需要把读取到的字符串转换成整数,同时要处理输入不是有效数字的情况。

下面给你两种可行的解决方案:

方案一:用nextLine()读取数字并转换

这种方式可以避免换行符残留的问题,不过要捕获可能的格式异常:

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    System.out.println("Enter a number:");
    // 先用nextLine()读取整行输入,再转成int
    int num = 0;
    try {
        String numStr = input.nextLine();
        num = Integer.parseInt(numStr);
    } catch (NumberFormatException e) {
        System.out.println("请输入有效的整数!");
        input.close();
        return;
    }
    System.out.println("Enter a name list:");
    String nameList = input.nextLine();
    System.out.println("Enter last name:");
    String lastName = input.nextLine();
    
    // 测试输出
    System.out.println("数字:" + num);
    System.out.println("名字列表:" + nameList);
    System.out.println("姓氏:" + lastName);
    
    input.close();
}

方案二:在nextInt()之后额外调用一次nextLine()吃掉换行符

如果你还是想用nextInt()读取数字,只需要在它之后加一行input.nextLine()来消耗掉残留的换行符,这样后续的nextLine()就能正常读取用户输入了:

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    System.out.println("Enter a number:");
    int num = input.nextInt();
    // 吃掉nextInt()留下的换行符
    input.nextLine();
    System.out.println("Enter a name list:");
    String nameList = input.nextLine();
    System.out.println("Enter last name:");
    String lastName = input.nextLine();
    
    // 测试输出
    System.out.println("数字:" + num);
    System.out.println("名字列表:" + nameList);
    System.out.println("姓氏:" + lastName);
    
    input.close();
}

两种方案都能解决你的问题,你可以根据自己的需求选择:如果想统一用nextLine()处理所有输入,选方案一;如果更习惯用nextInt()读数字,选方案二更简单。

内容的提问来源于stack exchange,提问作者Stéphane GRILLON

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:31:35