手把手教你5种方法实现Java判断字符串是否为数字

2023-09-21 16:58:00

方法一:用JAVA自带的函数
public static boolean isNumeric(String str){
for (int i = str.length();--i>=0;){
if (!Character.isDigit(str.charAt(i))){
return false;
}
}
return true;
}

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

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


 

方法二:
/*
* 判断是否为整数

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

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


 

方法三:FuncGPT(慧函数)自动生成
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; // 转换失败,字符串不是数字

        }

    }

}

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

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

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

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

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

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


方法五:用ascii码
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;
}

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

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

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

更多推荐

第七章(1):深度神经网络的基本结构、训练方法和在机器学习中的重要性

第七章(1):深度神经网络的基本结构、训练方法和在机器学习中的重要性作者:安静到无声个人主页作者简介:人工智能和硬件设计博士生、CSDN与阿里云开发者博客专家,多项比赛获奖者,发表SCI论文多篇。Thanks♪(・ω・)ノ如果觉得文章不错或能帮助到你学习,可以点赞👍收藏📁评论📒+关注哦!o( ̄▽ ̄)d欢迎大家来到

GDAL库学习

GDAL库学习GDAL是一个操作栅格数据和矢量数据的库,对图像而言,可以进行包括读取、写入、转换、处理各种操作。文章目录GDAL库学习RasterIO()函数1.添加引用2.读取图像3.获取图像基本信息4.保存输出图像5.释放RasterIO()函数RasterIO(GDALRWFlageRWFlag,intnXOff

全网最全知识图谱讲解!

什么是知识图谱知识图谱标准化白皮书定义:知识图谱(KnowledgeGraph)以结构化的形式描述客观世界中概念、实体及其关系,将互联网的信息表达成更接近人类认知世界的形式,提供了一种更好地组织、管理和理解互联网海量信息的能力。简单讲,知识图谱由节点(point)和边(edge)组成,每个节点表示一个实体,实体可以指客

DC电源模块宽电压输入和输出的范围是多少?

BOSHIDADC电源模块宽电压输入和输出的范围是多少?直流电源模块是一种常用的电源设备,可以将交流电转换成稳定的直流电,被广泛应用于各种工业自动化、数字电子、通信设备等领域。在实际使用中,用户需要了解直流电源模块的工作电压范围,以便正确选择和使用。直流电源模块的输入电压范围通常被称为宽电压输入,是指该模块可以接受的输

全栈性能测试工具:RunnerGo

随着自动化测试技术的不断进步,自动化测试已成为企业级应用的重要组成部分。然而,传统的性能测试工具往往复杂、繁琐,让企业陷入了两难的境地。软件测试正逐渐从手动测试向自动化测试转变,各种自动化测试工具和框架层出不穷,极大地提高了测试效率和质量。近年来出现的敏捷开发方法使得软件测试需要更快地跟进开发节奏,不断适应变化。敏捷测

2023年全网最全的软件测试八股文,稳进大厂(含答案)

Part11、你的测试职业发展是什么?测试经验越多,测试能力越高。所以我的职业发展是需要时间积累的,一步步向着高级测试工程师奔去。而且我也有初步的职业规划,前3年积累测试经验,按如何做好测试工程师的要点去要求自己,不断更新自己改正自己,做好测试任务。优势在于我对测试坚定不移的信心和热情,虽然经验还不够,但测试需要的基本

ModStartCMS v7.3.0 富文本MP3支持,后台组件优化

ModStart是一个基于Laravel模块化极速开发框架。模块市场拥有丰富的功能应用,支持后台一键快速安装,让开发者能快的实现业务功能开发。系统完全开源,基于Apache2.0开源协议,免费且不限制商业使用。功能特性丰富的模块市场,后台一键快速安装会员模块通用且完整,支持完整的API调用大文件分片上传,进度条显示,已

芯科蓝牙BG27开发笔记8-片上Flash读写

目标熟悉片上Flash的特点,知道如何使用,最好找到示例代码,有完整例程那是最好的查找参考手册除了768K的主空间,还包含:1.USERDATA区域,用户定义数据,可以读写。大小只有1K。2.设备特性和识别信息的DEVINFO空间3.内部生产测试和校准信息的CHIPCONFIG。RAM有两个部分:RAM0:共64K,0

微软(TTS)文本转语音服务API实现

此博客实现与java实现微软文本转语音(TTS)经验总结_javatts_${简简单单}的博客-CSDN博客之上,首先感谢博客源码的提供,本人在上面添加了一些详细的注释,方便大家跟好的理解和使用,毕竟我已经用原文调试了一下午才调通,一些细节的问题给大家标注出来,免得浪费大家的时间,下面直接开始代码吧!首先大家需要去微软

NFTScan 正式上线 TON NFTScan 浏览器!

2023年9月12号,NFTScan团队正式对外发布了TONNFTScan基础设施,将为TON生态的NFT开发者和用户提供简洁高效的NFT数据搜索查询服务。NFTScan作为全球领先的NFT数据基础设施服务商,TON是继Bitcoin、Ethereum、BNBChain、Polygon、Solana、Arbitrum、

删库跑路?掌握rm命令的技巧,高效删除文件和目录!

文章目录前言1.什么是rm命令?简介:认识这位特殊成员,他到底是好还是坏?2.如何使用rm命令?语法和选项:掌握rm命令的技巧和要点3.删除文件使用示例:轻松删除文件,释放磁盘空间4.删除目录使用示例:彻底删除目录及其内容,整理文件系统5.强制删除使用示例:一键强制删除,不再犹豫6.交互式删除使用示例:审慎删除,确保操

热文推荐