中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用Java判定一個數值是否在指定的開閉區間范圍內

發布時間:2022-09-05 10:02:56 來源:億速云 閱讀:377 作者:iii 欄目:開發技術

這篇文章主要介紹“如何使用Java判定一個數值是否在指定的開閉區間范圍內”,在日常操作中,相信很多人在如何使用Java判定一個數值是否在指定的開閉區間范圍內問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何使用Java判定一個數值是否在指定的開閉區間范圍內”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

引言

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

  • (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來判定一個數值是否在指定的開閉區間范圍內呢?可以按照以下的思路去實現:

  • 由于開閉區間是有一定規則的,所以開閉區間必須是合法的,除了(、)、[、]、, 、數字 之外,其他的字符都是不合法的,所以首先需要校驗開閉區間的合法性;

  • 判定開閉區間合法后,再拆分出開閉區間的最小值和最大值;

  • 根據開閉區間是否包含[],從而在判斷時看是否需要添加 = 號;

1、開閉區間的合法性校驗

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

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

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

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

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

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

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

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

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

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

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

    // 獲取開閉區間的最小值和最大值
    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判定一個數值是否在指定的開閉區間范圍內”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

盘山县| 自贡市| 阳山县| 台前县| 昭苏县| 武威市| 忻州市| 闽侯县| 福州市| 中西区| 洛浦县| 工布江达县| 东兰县| 定日县| 即墨市| 侯马市| 临沧市| 南城县| 昔阳县| 洛隆县| 长垣县| 鲜城| 隆安县| 灵武市| 正阳县| 咸阳市| 四子王旗| 凤冈县| 女性| 土默特左旗| 当阳市| 红河县| 金川县| 澄城县| 鄄城县| 胶州市| 剑河县| 仙桃市| 郑州市| 太仆寺旗| 高邑县|