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

为何调用sentenceReversal方法时传变量与直接传字符串结果不同?

问题原因及解决办法

1. 输入带空格字符串仅返回第一个单词的原因

你用scan.next()读取输入时,这个方法会以空格作为分隔符,只读取到第一个空格前的内容。比如输入Hello World,input6实际只拿到Hello,没有空格字符,触发递归方法的base case(x == -1),直接返回原字符串,最终输出Hello。

2. InputMismatchException及输入数字后剩余内容出现的原因

这是Scanner的输入处理机制导致的:

  • 如果之前使用过nextInt()、nextDouble()这类读取基本数据类型的方法,它们只会读取数字部分,不会处理输入末尾的换行符(\n)。
  • 后续调用nextLine()时,会直接读取残留的换行符,导致拿到空字符串;如果后续用next(),则会跳过换行符读取下一个单词,但如果输入内容和预期类型不匹配(比如用nextInt()时输入字符串),就会抛出InputMismatchException。

解决办法

  • 读取含空格的整行输入:把scan.next()替换成scan.nextLine(),就能获取包含空格的完整输入字符串。
  • 处理残留换行符:如果在调用nextLine()之前用过nextInt()等方法,需要先额外调用一次scan.nextLine()消耗残留的换行符,避免读取空内容。

修改后的case 6代码示例:

case 6:
    System.out.println("Enter a string to reverse:");
    // 若之前有nextInt()等操作,添加此行:scan.nextLine();
    String input6 = scan.nextLine();
    System.out.println(sentenceReversal(input6));
    break;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 05:13:25