最新国产好看的视频,伊人天堂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ì),對(duì)大家學(xué)習(xí)或者使用Java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

引言

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

  • (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í)看是否需要添加 = 號(hào);

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、測(cè)試驗(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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

疏勒县| 文安县| 九台市| 曲靖市| 乌兰县| 松滋市| 时尚| 洛扎县| 峨山| 枣强县| 东方市| 泾川县| 保亭| 汪清县| 南雄市| 竹溪县| 苏尼特右旗| 尼勒克县| 呼玛县| 庆安县| 正安县| 岳阳县| 邵阳县| 宜丰县| 阳曲县| 桂平市| 嵊泗县| 搜索| 罗山县| 文水县| 汉中市| 定南县| 麻栗坡县| 寿光市| 开封市| 曲阳县| 翁源县| 新丰县| 钟山县| 福建省| 海林市|