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

Java输入带空格姓名后取金额抛InputMismatchException,求空格检查函数

检查字符串是否包含空格的现成方法

Java的String类自带两种简单方法可以判断字符串里有没有空格:

  • contains()方法:直接传入空格字符就能判断,返回布尔值

    if (name.contains(" ")) {
        error = true;
    }
    
  • indexOf()方法:如果返回值不是-1,就说明字符串里有空格

    if (name.indexOf(" ") != -1) {
        error = true;
    }
    

顺便给你提个代码优化建议

你现在用sc.next()读名字,这个方法只会读到第一个空格就停。比如用户输入Mary Smith,name只会拿到Mary,剩下的Smith会留在输入缓冲区里,后面调用sc.nextDouble()时,程序会尝试把Smith转成double,直接抛出InputMismatchException——这也是你遇到问题的根源。

所以更靠谱的做法是用sc.nextLine()读取完整的一行输入,同时要处理之前输入留下的换行符。修改后的名字校验部分可以改成这样:

do {
    if(error) System.out.println("Sorry, error. Try again");
    error = false;
    
    System.out.print("Enter your name : ");
    // 清除之前输入操作留下的换行符
    if (sc.hasNextLine()) {
        sc.nextLine();
    }
    name = sc.nextLine().trim(); // 去掉首尾空格,防止用户只输入空格
    // 同时判断空字符串和包含空格的情况
    if(name.isEmpty() || name.contains(" ")) {
        error = true;
    }
} while(error);

另外注意,判断字符串为空别用name=="",要用name.isEmpty()或者name.length() == 0,因为==比的是对象地址,不是字符串内容。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 04:44:52