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

使用Java判定一個(gè)數(shù)值是否在指定的開閉區(qū)間范圍內(nèi)

 更新時(shí)間:2022年09月02日 11:32:02   作者:十方  
這篇文章主要給大家介紹了關(guān)于使用Java判定一個(gè)數(shù)值是否在指定的開閉區(qū)間范圍內(nèi)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

引言

對于開閉區(qū)間,在數(shù)學(xué)中的表示方式通常為 () 和 [],小括號代表開放區(qū)間,中括號代表封閉區(qū)間,而它們的區(qū)別主要在于是否包含 = 等于號,開閉區(qū)間通常會分為以下一些情形:

  • (1, 10):代表 1 < x < 10;
  • (1, 10]:代表 1 < x <= 10;
  • [1, 10]:代表 1 <= x <= 10;
  • [1, 10):代表 1 <= x < 10;
  • (1, ) 或 (1, ]:代表 x > 1;
  • [1, ] 或 [1, ):代表 x >= 1;
  • (, 10) 或 [, 10):代表 x < 10;
  • (, 10] 或 [, 10]:代表 x <= 10;

那么如何使用Java來判定一個(gè)數(shù)值是否在指定的開閉區(qū)間范圍內(nèi)呢?可以按照以下的思路去實(shí)現(xiàn):

  • 由于開閉區(qū)間是有一定規(guī)則的,所以開閉區(qū)間必須是合法的,除了(、)、[、]、, 、數(shù)字 之外,其他的字符都是不合法的,所以首先需要校驗(yàn)開閉區(qū)間的合法性;
  • 判定開閉區(qū)間合法后,再拆分出開閉區(qū)間的最小值和最大值;
  • 根據(jù)開閉區(qū)間是否包含[],從而在判斷時(shí)看是否需要添加 = 號;

1、開閉區(qū)間的合法性校驗(yàn)

開閉區(qū)間的合法性可以通過正則表達(dá)式進(jìn)行驗(yàn)證,具體正則表達(dá)式如下:

/**
 * 開閉區(qū)間正則表達(dá)式
 */
private static final Pattern NUM_RANGE_PATTERN = Pattern.compile("[\\[|\\(]\\s?\\d+\\s?,\\s?\\d+\\s?[\\)|\\]]");

左半開閉區(qū)間的合法性正則表達(dá)式如下:

/**
 * 左半?yún)^(qū)間正則表達(dá)式
 */
private static final Pattern LEFT_NUM_RANGE_PATTERN = Pattern.compile("[\\[|\\(]\\s?\\d+\\s?,\\s?[\\)|\\]]");

右半開閉區(qū)間的合法性正則表達(dá)式如下:

/**
 * 右半?yún)^(qū)間正則表達(dá)式
 */
private static final Pattern RIGHT_NUM_RANGE_PATTERN = Pattern.compile("[\\[|\\(],\\s?\\d+\\s?[\\)|\\]]");

判斷開閉區(qū)間的函數(shù)方法代碼如下:

/**
 * 判斷是否為有效的數(shù)字區(qū)間范圍
 * @param numRange 數(shù)字區(qū)間
 * @return boolean
 */
public static boolean isValidNumRange(String numRange) {
    return NUM_RANGE_PATTERN.matcher(numRange).matches()
            || LEFT_NUM_RANGE_PATTERN.matcher(numRange).matches()
            || RIGHT_NUM_RANGE_PATTERN.matcher(numRange).matches();
}

2、判定方法

/**
 * 判斷數(shù)值是否在區(qū)間范圍內(nèi)
 * @param number 數(shù)值
 * @param numRange 開閉區(qū)間
 * @return boolean
 */
public static boolean inNumRange(int number, String numRange) {
    Objects.requireNonNull(numRange);

    if (!isValidNumRange(numRange)) {
        return false;
    }

    String[] pairs = numRange.split(",");

    // 獲取開閉區(qū)間的最小值和最大值
    List<String> rangeNums = Arrays.stream(pairs).map(str -> str.replaceAll("[(|)|\\[|\\]]", "").trim()).collect(Collectors.toList());
    Integer minValue = "".equals(rangeNums.get(0)) ? null : Integer.valueOf(rangeNums.get(0));
    Integer maxValue = "".equals(rangeNums.get(1)) ? null : Integer.valueOf(rangeNums.get(1));

    // 判定數(shù)值是否大于最小值
    boolean minMatched = (minValue == null) || (pairs[0].startsWith("[") ? number >= minValue : number > minValue);
    // 判定數(shù)值是否小于最大值
    boolean maxMatched = (maxValue == null) || (pairs[1].endsWith("]") ? number <= maxValue : number < maxValue);

    return minMatched && maxMatched;
}

3、測試驗(yàn)證

public static void main(String[] args) {
        System.out.println(inNumRange(1, "(0, 2]"));
        System.out.println(inNumRange(1, "(, 2]"));
        System.out.println(inNumRange(1, "(1, 4]"));
        System.out.println(inNumRange(1, "(0, ]"));
    }

運(yùn)行程序,輸出如下結(jié)果:

true
true
false
true

總結(jié)

到此這篇關(guān)于使用Java判定一個(gè)數(shù)值是否在指定的開閉區(qū)間范圍內(nèi)的文章就介紹到這了,更多相關(guān)Java判定數(shù)值在開閉區(qū)間范圍內(nèi)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 解決Java項(xiàng)目中request流只能獲取一次的問題

    解決Java項(xiàng)目中request流只能獲取一次的問題

    Java項(xiàng)目開發(fā)中可能存在以下幾種情況,你需要在攔截器中統(tǒng)一攔截請求和你項(xiàng)目里可能需要搞一個(gè)統(tǒng)一的異常處理器,這兩種情況是比較常見的,本文將給大家介紹如何解決Java項(xiàng)目中request流只能獲取一次的問題,需要的朋友可以參考下
    2024-02-02
  • 深入理解Java設(shè)計(jì)模式之備忘錄模式

    深入理解Java設(shè)計(jì)模式之備忘錄模式

    這篇文章主要介紹了JAVA設(shè)計(jì)模式之備忘錄模式的的相關(guān)資料,文中示例代碼非常詳細(xì),供大家參考和學(xué)習(xí),感興趣的朋友可以了解
    2021-11-11
  • SpringBoot + WebSocket 實(shí)現(xiàn)答題對戰(zhàn)匹配機(jī)制案例詳解

    SpringBoot + WebSocket 實(shí)現(xiàn)答題對戰(zhàn)匹配機(jī)制案例詳解

    這篇文章主要介紹了SpringBoot + WebSocket 實(shí)現(xiàn)答題對戰(zhàn)匹配機(jī)制,分別為每個(gè)用戶擬定四種在線狀態(tài),通過流程圖給大家展示,需要的朋友可以參考下
    2021-05-05
  • 詳解Mybatis攔截器安全加解密MySQL數(shù)據(jù)實(shí)戰(zhàn)

    詳解Mybatis攔截器安全加解密MySQL數(shù)據(jù)實(shí)戰(zhàn)

    本文主要介紹了Mybatis攔截器安全加解密MySQL數(shù)據(jù)實(shí)戰(zhàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Java+Selenium調(diào)用JavaScript的方法詳解

    Java+Selenium調(diào)用JavaScript的方法詳解

    這篇文章主要為大家講解了java在利用Selenium操作瀏覽器網(wǎng)站時(shí)候,有時(shí)會需要用的JavaScript的地方,代碼該如何實(shí)現(xiàn)呢?快跟隨小編一起學(xué)習(xí)一下吧
    2023-01-01
  • Java中通過三級緩存解決Spring循環(huán)依賴詳解

    Java中通過三級緩存解決Spring循環(huán)依賴詳解

    這篇文章主要介紹了Java中通過三級緩存解決Spring循環(huán)依賴詳解,當(dāng)出現(xiàn)兩個(gè)或多個(gè) Bean 在初始化時(shí)相互依賴的情況時(shí),Spring Boot 會將其中一個(gè) Bean 提前暴露出來,以便其他 Bean 能夠在初始化時(shí)正確地引用它,這一策略能有效避免循環(huán)依賴導(dǎo)致的問題,需要的朋友可以參考下
    2023-09-09
  • 詳解Spring MVC自動(dòng)為對象注入枚舉類型

    詳解Spring MVC自動(dòng)為對象注入枚舉類型

    本篇文章主要介紹了Spring MVC自動(dòng)為對象注入枚舉類型,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-04-04
  • 基于Java隨機(jī)生成手機(jī)短信驗(yàn)證碼的實(shí)例代碼

    基于Java隨機(jī)生成手機(jī)短信驗(yàn)證碼的實(shí)例代碼

    這篇文章主要介紹了Java隨機(jī)生成手機(jī)短信驗(yàn)證碼的實(shí)例代碼,代碼分為哦簡單版和復(fù)雜版,需要的朋友可以參考下
    2019-04-04
  • Redis緩存策略超詳細(xì)講解

    Redis緩存策略超詳細(xì)講解

    實(shí)際開發(fā)中緩存處理是必須的,不可能我們每次客戶端去請求一次服務(wù)器,服務(wù)器每次都要去數(shù)據(jù)庫中進(jìn)行查找,為什么要使用緩存?說到底是為了提高系統(tǒng)的運(yùn)行速度
    2022-09-09
  • SpringBoot+slf4j線程池全鏈路調(diào)用日志跟蹤問題及解決思路(二)

    SpringBoot+slf4j線程池全鏈路調(diào)用日志跟蹤問題及解決思路(二)

    本文主要給大家介紹如何實(shí)現(xiàn)子線程中的traceId日志跟蹤,本文通過封裝Callable為例給大家介紹的非常詳細(xì),需要的朋友一起看看吧
    2021-05-05

最新評論

常熟市| 桓仁| 霍州市| 福建省| 南部县| 甘肃省| 安福县| 本溪| 正蓝旗| 福安市| 团风县| 临潭县| 黄大仙区| 光山县| 水城县| 台南县| 基隆市| 蓝田县| 象州县| 崇仁县| 宣化县| 濉溪县| 姜堰市| 金溪县| 东城区| 肃宁县| 思茅市| 调兵山市| 舒兰市| 河津市| 南部县| 乳山市| 昌平区| 中超| 班戈县| 永寿县| 敦化市| 平凉市| 锦州市| 日喀则市| 义乌市|