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

Java如何检测字符串中的空格并在存在空格时给出错误提示?

Java 检测字符串含空格的简便实现及代码修正

简便实现方案

针对检测字符串是否包含空格的需求,优先推荐以下两种低门槛、不易出错的写法,不需要写复杂逻辑:

  • 最推荐使用String类自带的contains()方法:直接判断字符串变量.contains(" ")即可,返回true就代表存在空格,写法直观不需要记额外规则,性能优于正则匹配,非常适合新手使用。
  • 你之前尝试过的indexOf()方法本身也是可行的:只要判断字符串变量.indexOf(' ') != -1,返回值不等于-1就说明找到了空格位置,即字符串包含空格。
  • 如果需要同时检测制表符、全角空格、换行符等所有空白字符,再使用正则匹配即可。

原有代码的问题

你写的代码存在3个容易导致功能失效的问题:

  1. 输入读取方法用错了:input.next()默认会以空格作为分隔符截断输入,也就是说用户输入带空格的内容时,next()只会读取第一个空格之前的部分,你根本拿不到完整的带空格字符串,这大概率是你之前试了indexOf等方案没生效的核心原因,要读取用户输入的整行内容需要用input.nextLine()。
  2. 正则转义写法错误:Java字符串中编写正则时,反斜杠需要做双重转义,匹配空白符的\s在Java字符串里必须写成\\s,单写\s不符合Java语法规则,代码会直接编译报错。
  3. 代码缩进不规范,if块内的逻辑没有统一缩进,可读性差;直接调用System.exit(0)终止程序的逻辑比较生硬,实际开发中通常会搭配循环让用户重新输入,而不是直接退出程序。

修正后的参考代码

import javax.swing.JOptionPane;
import java.util.Scanner;

public class GuessNumberInput {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入你猜测的数字,提交内容请勿包含空格");
        // 读取整行输入,避免被空格截断
        String guess = input.nextLine();

        // 用最简便的contains方法判断是否存在空格
        if (guess.contains(" ")) {
            JOptionPane.showMessageDialog(null, "输入有误,请不要在字符之间输入空格后重试");
            System.exit(0);
        }

        // 后续猜数字的业务逻辑可写在此处
        System.out.println("你输入的有效猜测为:" + guess);
    }
}

补充说明:如果需要匹配所有类型的空白字符(包括制表符、全角空格、换行符等),可以把判断条件替换为guess.matches(".*\\s.*"),注意不要漏写反斜杠的双重转义。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 19:06:42