欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

引言

對于開閉區(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來判定一個數(shù)值是否在指定的開閉區(qū)間范圍內(nèi)呢?可以按照以下的思路去實現(xiàn):

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

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

開閉區(qū)間的合法性可以通過正則表達(dá)式進(jì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、測試驗證

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, ]"));
    }

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

true
true
false
true

總結(jié)

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

相關(guān)文章

  • spring?MVC實現(xiàn)簡單登錄功能

    spring?MVC實現(xiàn)簡單登錄功能

    這篇文章主要為大家詳細(xì)介紹了spring?MVC實現(xiàn)簡單登錄功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • OpenCV Java實現(xiàn)人臉識別和裁剪功能

    OpenCV Java實現(xiàn)人臉識別和裁剪功能

    這篇文章主要為大家詳細(xì)介紹了OpenCV Java實現(xiàn)人臉識別和裁剪功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • 利用Java實現(xiàn)帶GUI的氣泡詩詞特效

    利用Java實現(xiàn)帶GUI的氣泡詩詞特效

    這篇文章主要為大家介紹了如何利用Java語言實現(xiàn)帶GUI的氣泡詩詞特效,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)Java有一定幫助,感興趣的可以了解一下
    2022-08-08
  • Java實現(xiàn)異步延遲隊列的方法詳解

    Java實現(xiàn)異步延遲隊列的方法詳解

    目前系統(tǒng)中有很多需要用到延時處理的功能,本文就為大家介紹了Java實現(xiàn)異步延遲隊列的方法,文中的示例代碼講解詳細(xì),需要的可以參考一下
    2023-03-03
  • SpringBoot接口接收json參數(shù)解析

    SpringBoot接口接收json參數(shù)解析

    這篇文章主要介紹了SpringBoot接口接收json參數(shù)解析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • 生產(chǎn)環(huán)境NoHttpResponseException異常排查解決記錄分析

    生產(chǎn)環(huán)境NoHttpResponseException異常排查解決記錄分析

    這篇文章主要為大家介紹了生產(chǎn)環(huán)境NoHttpResponseException異常排查解決記錄分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • OpenJDK源碼解析之System.out.println詳解

    OpenJDK源碼解析之System.out.println詳解

    這篇文章主要介紹了OpenJDK源碼解析之System.out.println詳解,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)java的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • SpringCloud Gateway動態(tài)轉(zhuǎn)發(fā)后端服務(wù)實現(xiàn)過程講解

    SpringCloud Gateway動態(tài)轉(zhuǎn)發(fā)后端服務(wù)實現(xiàn)過程講解

    這篇文章主要介紹了SpringCloud Gateway動態(tài)轉(zhuǎn)發(fā)后端服務(wù)實現(xiàn)過程,簡單的路由轉(zhuǎn)發(fā)可以通過SpringCloudGateway的配置文件實現(xiàn),在一些業(yè)務(wù)場景種,會需要動態(tài)替換路由配置中的后端服務(wù)地址,單純靠配置文件無法滿足這種需求
    2023-03-03
  • SpringBoot中MyBatis-Plus 查詢時排除某些字段的操作方法

    SpringBoot中MyBatis-Plus 查詢時排除某些字段的操作方法

    這篇文章主要介紹了SpringBoot中MyBatis-Plus 查詢時排除某些字段的操作方法,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-08-08
  • 詳解JAVA SPI機制和使用方法

    詳解JAVA SPI機制和使用方法

    這篇文章主要介紹了JAVA SPI機制的相關(guān)知識以及使用示例,文中代碼非常詳細(xì),幫助大家更好的學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06

最新評論