一文带你掌握Java判断字符串是否为数字的5种实现方法

 更新时间:2026年03月26日 09:24:29   作者:飞算JavaAI开发助手  
这篇文章主要为大家详细介绍了Java判断字符串是否为数字的5种实现方法,文中的示例代码讲解详细,具有一定的借鉴价值,大家可以根据需要进行选择

方法一:用JAVA自带的函数

方法一通过遍历字符串的每一个字符,并使用Character.isDigit()函数检查每一个字符是否是数字。如果字符串中所有字符都是数字,那么这个方法就会返回true。但是,如果字符串中含有非数字字符,它就会立即返回false。

这种方法简洁明了,但可能过于严格,因为它认为像"123 "这样的字符串(末尾包含空格)不是数字。

public static boolean isNumeric(String str){
    for (int i = str.length();--i>=0;){
        if (!Character.isDigit(str.charAt(i))){
            return false;
        }
    }
    return true;
}

方法二:通过正则表达式

方法二通过正则表达式检查字符串是否只包含数字。它匹配所有以正则表达式["^[-+]?[\d]*$"]开始的字符串,这个正则表达式表示字符串的开始可以是正负号,后面跟随任意数量的数字。但是,它认为像"123 "这样的字符串是整数,而实际上" "不是数字的一部分。

/*
* 判断是否为整数
* @param str 传入的字符串
* @return 是整数返回true,否则返回false
*/
public static boolean isInteger(String str) {
Pattern pattern = Pattern.compile("^[-\+]?[\d]*$");
return pattern.matcher(str).matches();
}

方法三:FuncGPT(慧函数)自动生成

方法三使用Double.parseDouble()方法尝试将字符串转换为双精度浮点数。转换成功,说明字符串是数字,返回true;转换失败,说明字符串不是数字,返回false。

这个代码段包括一个注解 @MethodDesc,用于描述这个方法的一些信息,包括它的描述(desc)和参数(params)。参数描述也是一个数组,其中每个元素都有一个名字(name)和描述(desc)。这种注解通常用于生成API文档或者用于某些IDE的代码提示功能。

这个 isNumeric 方法的设计思路是合理的,可以满足大部分场景的需求。但是,需要注意的是,由于 Double.parseDouble() 方法可以将诸如 "3.14" 这样的字符串解析为有效的浮点数,因此,该方法可能对于严格意义上的“数字”定义有些宽松。如果你需要更精确的定义(例如,只接受整数值或者只接受具有特定小数位数的浮点数),你可能需要自定义一个更复杂的方法来检查字符串。

总的来说,这是一个简单、明了的方法,可以有效地检查一个字符串是否可以解析为数字。

package com.feisuanyz.function;
import com.feisuanyz.flow.core.cmpt.annotation.function.MethodDesc;
import com.feisuanyz.flow.core.cmpt.annotation.function.ParamDesc;
public class StringNumberChecker {
@MethodDesc(desc = "判断字符串是否为数字",
params = {
@ParamDesc(name = "str", desc = "要判断的字符串"),
})
public static boolean isNumeric(String str) {
        if (str == null || str.isEmpty()) { // 检查字符串是否为空
            return false;
        }
        try {
            Double.parseDouble(str); // 使用Double.parseDouble()方法尝试将字符串转换为double
            return true; // 转换成功,字符串是数字
        } catch (NumberFormatException e) {
            return false; // 转换失败,字符串不是数字
        }
    }
}

方法四:先检查字符串是否为空或者只包含空格

方法四首先检查字符串是否为空或者只包含空格,如果满足条件则返回false。然后它使用String的matches()方法检查字符串是否符合正则表达式"^[0-9]*$",这个正则表达式表示字符串仅由0-9的数字组成。这个方法考虑了空字符串和空格,但在遇到像"123 "这样的字符串时,仍然会认为是数字。

public final static boolean isNumeric(String s) {
if (s != null && !"".equals(s.trim()))
return s.matches("^[0-9]*$");
else
return false;
}

方法五:用ascii码

这个方法通过检查字符串中每个字符的ASCII码来判断是否为数字。如果字符的ASCII码不在48('0')和57('9')之间,它就立即返回false。这种方法非常简洁,但也非常严格,它将认为像"123 "这样的字符串不是数字,尽管" "是数字的一部分。

public static boolean isNumeric(String str){
for(int i=str.length();--i>=0;){
int chr=str.charAt(i);
if(chr<48 || chr>57)
return false;
}
return true;
}

综上,这些方法都有其优点和缺点,选择哪种方法取决于你的具体需求和对"数字"的定义。

FuncGPT(慧函数)是全栈式自动开发工具SoFlu软件机器人上线的最新功能,专注于AI生成Java函数,通过自然语言描述Java函数需求,实时生成高质量、高可读性的Java函数代码。生成代码可直接复制到IDEA,或一键导入Java全自动开发工具函数库。

知识扩展

java工具sx 判断字符串是否是数值型,包括负数、0、正整数、浮点数 等

方法1:使用org.apache.commons.lang3.StringUtils

@Test
void judgeStringType()  {
    String s0 = "123";
    String s1 = "adb123";
    String s2 = "-1";
    String s3 = "0";
    String s4 = "3.1415926";
    System.out.println("判断s0是否为数值类型:" + StringUtils.isNumeric(s0)); //true
    System.out.println("判断s1是否为数值类型:" + StringUtils.isNumeric(s1)); //false
    System.out.println("判断s2是否为数值类型:" + StringUtils.isNumeric(s2)); //false
    System.out.println("判断s3是否为数值类型:" + StringUtils.isNumeric(s3)); //true
    System.out.println("判断s4是否为数值类型:" + StringUtils.isNumeric(s4)); //false
}

测试结果表明:使用org.apache.commons.lang3.StringUtils,判断字符串是否是数值类型,数值只能判断0~正整数,有一个缺陷,负数和浮点数未正确判断,比如-1判断为false

测试方法2:采用正则表达式匹配,优点:除字符串外都能匹配

@Test
void judgeStringType2()  {
    Pattern pattern = Pattern.compile("-?\\d+(\\.\\d+)?");
    String s0 = "123";
    String s1 = "adb123";
    String s2 = "-1";
    String s3 = "0";
    String s4 = "3.1415926";
    System.out.println("判断s0是否为数值类型:" + pattern.matcher(s0).matches()); //true
    System.out.println("判断s1是否为数值类型:" + pattern.matcher(s1).matches()); //false
    System.out.println("判断s2是否为数值类型:" + pattern.matcher(s2).matches()); //true
    System.out.println("判断s3是否为数值类型:" + pattern.matcher(s3).matches()); //true
    System.out.println("判断s4是否为数值类型:" + pattern.matcher(s4).matches()); //true
}

测试结果表明:采用正则表达式匹配,优点:除字符串外都能匹配,推荐使用第二种方法。

到此这篇关于一文带你掌握Java判断字符串是否为数字的5种实现方法的文章就介绍到这了,更多相关Java判断字符串是否为数字内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 解决Javaweb 提交表单到servlet时出现空白页面,但网站不报错问题

    解决Javaweb 提交表单到servlet时出现空白页面,但网站不报错问题

    这篇文章主要介绍了解决Javaweb 提交表单到servlet时出现空白页面,但网站不报错的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • Mybatis往Mapper.xml文件中传递多个参数问题

    Mybatis往Mapper.xml文件中传递多个参数问题

    这篇文章主要介绍了Mybatis往Mapper.xml文件中传递多个参数问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • JMeter 实现Java请求步骤及原理详解

    JMeter 实现Java请求步骤及原理详解

    这篇文章主要介绍了JMeter 实现Java请求步骤及原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • Java写哈希表的完整实例代码

    Java写哈希表的完整实例代码

    Java中的哈希表是数据结构中的一个重要组成部分,用于高效存储和查找数据,这篇文章主要介绍了Java写哈希表的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2026-03-03
  • IDEA快速搭建Java开发环境的教程图解

    IDEA快速搭建Java开发环境的教程图解

    这篇文章主要介绍了IDEA如何快速搭建Java开发环境,本文通过图文并茂的形式给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-11-11
  • SpringSecurity数据库进行认证和授权的使用

    SpringSecurity数据库进行认证和授权的使用

    本文主要介绍了用户的账号、密码以及角色信息在数据库中的认证和授权,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • spring boot 防止重复提交实现方法详解

    spring boot 防止重复提交实现方法详解

    这篇文章主要介绍了spring boot 防止重复提交实现方法,结合实例形式详细分析了spring boot 防止重复提交具体配置、实现方法及操作注意事项,需要的朋友可以参考下
    2019-11-11
  • SpringMVC4.3解析器HandlerMethodArgumentResolver接口源码

    SpringMVC4.3解析器HandlerMethodArgumentResolver接口源码

    这篇文章主要为大家介绍了SpringMVC4.3解析器HandlerMethodArgumentResolver接口源码解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • Java中实现分布式定时任务的方法

    Java中实现分布式定时任务的方法

    这篇文章主要介绍了Java中实现分布式定时任务,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • 浅谈Java的LinkedHashSet源码

    浅谈Java的LinkedHashSet源码

    这篇文章主要介绍了浅谈Java的LinkedHashSet源码,底层是链表实现的,是set集合中唯一一个能保证怎么存就怎么取的集合对象
    因为是HashSet的子类,所以也是保证元素唯一的,与HashSet的原理一样,需要的朋友可以参考下
    2023-09-09

最新评论