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

Java中charAt(i)==' '判断空格不生效问题排查

问题根因

空格判断分支永远不触发,核心原因是Scanner的next()方法的默认读取规则:
next()默认以所有空白字符(空格、制表符、换行、回车等)作为输入分隔符,调用时只会读取到第一个分隔符之前的内容,分隔符本身以及后面的内容都不会被存入返回的字符串里。
也就是说你代码里的text变量从一开始就不可能包含空格字符,遍历的时候自然永远匹配不到' ',对应分支当然不会执行。你代码里判断字符为a的分支能正常触发,也是因为a不属于空白分隔符,会被next()正常读入。
举个例子:如果控制台输入test abc,in.next()实际只会读取到test,后面的空格和abc都会留在输入缓冲区,根本不会进入text变量。

修复方案

你可以根据自己的需求选下面任意一种方案修改:

  • 方案1:读取整行输入(最常用)
    把读取输入的in.next()替换成in.nextLine(),这个方法会读取一整行内容直到换行符,行内的所有空格都会被完整保留:

    String text = in.nextLine();
    

    注意:如果你之前已经调用过nextInt()、next()这类不会消费末尾换行符的方法,直接调用nextLine()会读到空字符串,需要先额外调用一次nextLine()把缓冲区里残留的换行符消费掉;但你当前给出的代码是首次读取输入,不存在这个问题,直接替换即可。

  • 方案2:修改Scanner的默认分隔符
    如果你不想用nextLine(),也可以手动给Scanner设置分隔符为换行符,这样next()就会把换行前的所有内容(包括空格)都读进来:

    // 设置分隔符为换行符
    in.useDelimiter("\n");
    String text = in.next();
    

修改完成后重新运行,输入带空格的文本时,空格判断分支就可以正常触发输出了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 08:27:21