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

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

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

引言

對于開閉區(qū)間,在數學中的表示方式通常為 () 和 [],小括號代表開放區(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來判定一個數值是否在指定的開閉區(qū)間范圍內呢?可以按照以下的思路去實現:

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

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

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

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

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

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

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

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

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

/**
 * 判斷是否為有效的數字區(qū)間范圍
 * @param numRange 數字區(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、判定方法

/**
 * 判斷數值是否在區(qū)間范圍內
 * @param number 數值
 * @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));

    // 判定數值是否大于最小值
    boolean minMatched = (minValue == null) || (pairs[0].startsWith("[") ? number >= minValue : number > minValue);
    // 判定數值是否小于最大值
    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, ]"));
    }

運行程序,輸出如下結果:

true
true
false
true

總結

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

相關文章

  • spring?MVC實現簡單登錄功能

    spring?MVC實現簡單登錄功能

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

    OpenCV Java實現人臉識別和裁剪功能

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

    利用Java實現帶GUI的氣泡詩詞特效

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

    Java實現異步延遲隊列的方法詳解

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

    SpringBoot接口接收json參數解析

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

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

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

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

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

    SpringCloud Gateway動態(tài)轉發(fā)后端服務實現過程講解

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

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

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

    詳解JAVA SPI機制和使用方法

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

最新評論