最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一文帶你掌握J(rèn)ava判斷字符串是否為數(shù)字的5種實(shí)現(xiàn)方法

 更新時(shí)間:2026年03月26日 09:24:29   作者:飛算JavaAI開發(fā)助手  
這篇文章主要為大家詳細(xì)介紹了Java判斷字符串是否為數(shù)字的5種實(shí)現(xiàn)方法,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,大家可以根據(jù)需要進(jìn)行選擇

方法一:用JAVA自帶的函數(shù)

方法一通過遍歷字符串的每一個(gè)字符,并使用Character.isDigit()函數(shù)檢查每一個(gè)字符是否是數(shù)字。如果字符串中所有字符都是數(shù)字,那么這個(gè)方法就會(huì)返回true。但是,如果字符串中含有非數(shù)字字符,它就會(huì)立即返回false。

這種方法簡(jiǎn)潔明了,但可能過于嚴(yán)格,因?yàn)樗J(rèn)為像"123 "這樣的字符串(末尾包含空格)不是數(shù)字。

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

方法二:通過正則表達(dá)式

方法二通過正則表達(dá)式檢查字符串是否只包含數(shù)字。它匹配所有以正則表達(dá)式["^[-+]?[\d]*$"]開始的字符串,這個(gè)正則表達(dá)式表示字符串的開始可以是正負(fù)號(hào),后面跟隨任意數(shù)量的數(shù)字。但是,它認(rèn)為像"123 "這樣的字符串是整數(shù),而實(shí)際上" "不是數(shù)字的一部分。

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

方法三:FuncGPT(慧函數(shù))自動(dòng)生成

方法三使用Double.parseDouble()方法嘗試將字符串轉(zhuǎn)換為雙精度浮點(diǎn)數(shù)。轉(zhuǎn)換成功,說明字符串是數(shù)字,返回true;轉(zhuǎn)換失敗,說明字符串不是數(shù)字,返回false。

這個(gè)代碼段包括一個(gè)注解 @MethodDesc,用于描述這個(gè)方法的一些信息,包括它的描述(desc)和參數(shù)(params)。參數(shù)描述也是一個(gè)數(shù)組,其中每個(gè)元素都有一個(gè)名字(name)和描述(desc)。這種注解通常用于生成API文檔或者用于某些IDE的代碼提示功能。

這個(gè) isNumeric 方法的設(shè)計(jì)思路是合理的,可以滿足大部分場(chǎng)景的需求。但是,需要注意的是,由于 Double.parseDouble() 方法可以將諸如 "3.14" 這樣的字符串解析為有效的浮點(diǎn)數(shù),因此,該方法可能對(duì)于嚴(yán)格意義上的“數(shù)字”定義有些寬松。如果你需要更精確的定義(例如,只接受整數(shù)值或者只接受具有特定小數(shù)位數(shù)的浮點(diǎn)數(shù)),你可能需要自定義一個(gè)更復(fù)雜的方法來檢查字符串。

總的來說,這是一個(gè)簡(jiǎn)單、明了的方法,可以有效地檢查一個(gè)字符串是否可以解析為數(shù)字。

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 = "判斷字符串是否為數(shù)字",
params = {
@ParamDesc(name = "str", desc = "要判斷的字符串"),
})
public static boolean isNumeric(String str) {
        if (str == null || str.isEmpty()) { // 檢查字符串是否為空
            return false;
        }
        try {
            Double.parseDouble(str); // 使用Double.parseDouble()方法嘗試將字符串轉(zhuǎn)換為double
            return true; // 轉(zhuǎn)換成功,字符串是數(shù)字
        } catch (NumberFormatException e) {
            return false; // 轉(zhuǎn)換失敗,字符串不是數(shù)字
        }
    }
}

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

方法四首先檢查字符串是否為空或者只包含空格,如果滿足條件則返回false。然后它使用String的matches()方法檢查字符串是否符合正則表達(dá)式"^[0-9]*$",這個(gè)正則表達(dá)式表示字符串僅由0-9的數(shù)字組成。這個(gè)方法考慮了空字符串和空格,但在遇到像"123 "這樣的字符串時(shí),仍然會(huì)認(rèn)為是數(shù)字。

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

方法五:用ascii碼

這個(gè)方法通過檢查字符串中每個(gè)字符的ASCII碼來判斷是否為數(shù)字。如果字符的ASCII碼不在48('0')和57('9')之間,它就立即返回false。這種方法非常簡(jiǎn)潔,但也非常嚴(yán)格,它將認(rèn)為像"123 "這樣的字符串不是數(shù)字,盡管" "是數(shù)字的一部分。

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;
}

綜上,這些方法都有其優(yōu)點(diǎn)和缺點(diǎn),選擇哪種方法取決于你的具體需求和對(duì)"數(shù)字"的定義。

FuncGPT(慧函數(shù))是全棧式自動(dòng)開發(fā)工具SoFlu軟件機(jī)器人上線的最新功能,專注于AI生成Java函數(shù),通過自然語言描述Java函數(shù)需求,實(shí)時(shí)生成高質(zhì)量、高可讀性的Java函數(shù)代碼。生成代碼可直接復(fù)制到IDEA,或一鍵導(dǎo)入Java全自動(dòng)開發(fā)工具函數(shù)庫。

知識(shí)擴(kuò)展

java工具sx 判斷字符串是否是數(shù)值型,包括負(fù)數(shù)、0、正整數(shù)、浮點(diǎn)數(shù) 等

方法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是否為數(shù)值類型:" + StringUtils.isNumeric(s0)); //true
    System.out.println("判斷s1是否為數(shù)值類型:" + StringUtils.isNumeric(s1)); //false
    System.out.println("判斷s2是否為數(shù)值類型:" + StringUtils.isNumeric(s2)); //false
    System.out.println("判斷s3是否為數(shù)值類型:" + StringUtils.isNumeric(s3)); //true
    System.out.println("判斷s4是否為數(shù)值類型:" + StringUtils.isNumeric(s4)); //false
}

測(cè)試結(jié)果表明:使用org.apache.commons.lang3.StringUtils,判斷字符串是否是數(shù)值類型,數(shù)值只能判斷0~正整數(shù),有一個(gè)缺陷,負(fù)數(shù)和浮點(diǎn)數(shù)未正確判斷,比如-1判斷為false

測(cè)試方法2:采用正則表達(dá)式匹配,優(yōu)點(diǎn):除字符串外都能匹配

@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是否為數(shù)值類型:" + pattern.matcher(s0).matches()); //true
    System.out.println("判斷s1是否為數(shù)值類型:" + pattern.matcher(s1).matches()); //false
    System.out.println("判斷s2是否為數(shù)值類型:" + pattern.matcher(s2).matches()); //true
    System.out.println("判斷s3是否為數(shù)值類型:" + pattern.matcher(s3).matches()); //true
    System.out.println("判斷s4是否為數(shù)值類型:" + pattern.matcher(s4).matches()); //true
}

測(cè)試結(jié)果表明:采用正則表達(dá)式匹配,優(yōu)點(diǎn):除字符串外都能匹配,推薦使用第二種方法。

到此這篇關(guān)于一文帶你掌握J(rèn)ava判斷字符串是否為數(shù)字的5種實(shí)現(xiàn)方法的文章就介紹到這了,更多相關(guān)Java判斷字符串是否為數(shù)字內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java多線程關(guān)鍵字final和static詳解

    java多線程關(guān)鍵字final和static詳解

    這篇文章主要介紹了java多線程關(guān)鍵字final和static詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • SpringBoot項(xiàng)目從搭建到發(fā)布一條龍

    SpringBoot項(xiàng)目從搭建到發(fā)布一條龍

    這篇文章主要介紹了SpringBoot項(xiàng)目從搭建到發(fā)布一條龍,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • java 實(shí)現(xiàn)微信服務(wù)器下載圖片到自己服務(wù)器

    java 實(shí)現(xiàn)微信服務(wù)器下載圖片到自己服務(wù)器

    這篇文章主要介紹了 java 實(shí)現(xiàn)微信服務(wù)器下載圖片到自己服務(wù)器的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • SpringBoot中配置Web靜態(tài)資源路徑的方法

    SpringBoot中配置Web靜態(tài)資源路徑的方法

    這篇文章主要介紹了SpringBoot中配置Web靜態(tài)資源路徑的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • 詳解Spring Boot下使用logback 記錄多個(gè)文件日志

    詳解Spring Boot下使用logback 記錄多個(gè)文件日志

    這篇文章主要介紹了詳解Spring Boot下使用logback 記錄多個(gè)文件日志,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-08-08
  • Java 8實(shí)現(xiàn)任意參數(shù)的單鏈表

    Java 8實(shí)現(xiàn)任意參數(shù)的單鏈表

    這篇文章主要為大家詳細(xì)介紹了Java 8實(shí)現(xiàn)任意參數(shù)的單鏈表,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • window?下?win10?jdk8安裝與環(huán)境變量的配置過程

    window?下?win10?jdk8安裝與環(huán)境變量的配置過程

    這篇文章主要介紹了window?下?win10?jdk8安裝與環(huán)境變量的配置,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-08-08
  • Java中的集合框架

    Java中的集合框架

    本文主要介紹了Java中集合框架的相關(guān)知識(shí),具有很好的參考價(jià)值,下面跟著小編一起來看下吧
    2017-03-03
  • 一篇文章帶你搞定JAVA反射

    一篇文章帶你搞定JAVA反射

    這篇文章主要介紹了Java反射機(jī)制的簡(jiǎn)單講解,本文講解了Java的高級(jí)概念反射機(jī)制,通過文字介紹案例該項(xiàng)概念和代碼的詳細(xì)展示,需要的朋友可以參考下
    2021-07-07
  • Java中BIO、NIO和AIO舉例總結(jié)

    Java中BIO、NIO和AIO舉例總結(jié)

    Java BIO、NIO、AIO是 Java 中的三種I/O模式,每種模式都有其特點(diǎn)和應(yīng)用場(chǎng)景,這篇文章主要介紹了Java中BIO、NIO和AIO的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2026-02-02

最新評(píng)論

上虞市| 泰顺县| 临清市| 田东县| 揭西县| 讷河市| 永顺县| 瓮安县| 兴隆县| 松滋市| 晋州市| 宽甸| 洪雅县| 阜平县| 宁阳县| 金塔县| 蛟河市| 吉水县| 新龙县| 保定市| 古交市| 牟定县| 资溪县| 昌邑市| 新巴尔虎左旗| 宿州市| 海城市| 阳朔县| 建德市| 垦利县| 兴化市| 萨嘎县| 麻江县| 昭平县| 屏东县| 宝山区| 和田市| 南宫市| 贞丰县| 苗栗县| 普定县|