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

Scanner输入下判断单词先后的代码为何无法正常输出全部结果?

解决Scanner输入仅输出首个单词顺序的问题

最近我在实现一个基于子串出现顺序逻辑的单词先后判断功能时,踩了个小坑:直接用硬编码的字符串测试时,程序能完美输出所有单词的顺序,但换成用Scanner接收用户输入后,每次只能输出第一个单词的结果,第二、第三个完全没动静。

折腾了好一会儿才找到问题根源——我误用了Scanner的next()方法,而不是应该用的nextLine()!

为什么会出现这个问题?

  • next()方法的特性是以空白符(空格、换行、制表符等)作为分隔符,它只会读取到第一个空白符就停止,也就是说如果用户输入的是一整句包含多个单词的内容,next()只会把第一个单词拿出来,剩下的内容都留在输入缓冲区里,后续的判断逻辑自然拿不到完整的输入,也就没法处理后面的单词了。
  • 而nextLine()是读取一整行的全部内容,直到遇到换行符才停止,这样就能获取到用户输入的完整句子,后续的单词顺序判断逻辑才能正常处理所有单词。

代码示例对比

错误写法(仅读取首个单词):

Scanner scanner = new Scanner(System.in);
String inputContent = scanner.next(); // 只读取到第一个空白符前的内容
// 单词顺序判断逻辑...

正确写法(读取整行内容):

Scanner scanner = new Scanner(System.in);
String inputContent = scanner.nextLine(); // 获取完整的一行输入
// 单词顺序判断逻辑...

改完之后,程序就能正常输出所有单词的顺序啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:40:00