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

Java中Scanner获取输入需重复输入的问题排查

问题解答:为什么需要重复输入两次名字?

嘿,你猜的完全没错!问题确实出在sc.next()这个方法上,我来给你拆解清楚:

原因分析

Scanner类的next()方法的核心逻辑是:每次调用都会从输入流里读取下一个以空格(或换行符)分隔的单词。你的代码里做了两次调用:

  • 第一次调用firstName = sc.next();:这时候程序会读取你输入的第一个单词,把它存在firstName变量里
  • 第二次调用System.out.println("Hello, " + sc.next() + "!");:这时候程序发现输入流里已经没有未读取的内容了,就会停下来等你再输入一个单词,所以才会出现需要重复输入两次的情况

修正方案

有两种简单的解决方式,你可以根据需求选:

方案1:复用已经读取的变量

既然已经把名字存在firstName里了,直接用这个变量输出就行:

public static void main(String[] args) { 
    // 创建可用的输入设备实例
    Scanner sc = new Scanner(System.in); 
    // 提示用户输入
    System.out.println("Please enter your first name:"); 
    // 捕获首个单词并赋值给变量
    String firstName = sc.next(); 
    // 构建问候语(直接用已保存的变量)
    System.out.println("Hello, " + firstName + "!"); 
}

方案2:只读取一次(如果不需要保存变量)

如果不需要把名字存在变量里,直接读取一次就输出:

public static void main(String[] args) { 
    Scanner sc = new Scanner(System.in); 
    System.out.println("Please enter your first name:"); 
    // 只调用一次next(),直接用在输出里
    System.out.println("Hello, " + sc.next() + "!"); 
}

这样修改后,你只需要输入一次名字,程序就会正常输出问候语啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 11:09:41