<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
對於開閉區間,在數學中的表示方式通常為 () 和 [],小括號代表開放區間,中括號代表封閉區間,而它們的區別主要在於是否包含 = 等於號,開閉區間通常會分為以下一些情形:
那麼如何使用Java來判定一個數值是否在指定的開閉區間範圍內呢?可以按照以下的思路去實現:
開閉區間的合法性可以通過正規表示式進行驗證,具體正規表示式如下:
/** * 開閉區間正規表示式 */ 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(); }
/** * 判斷數值是否在區間範圍內 * @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; }
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判定一個數值是否在指定的開閉區間範圍內的文章就介紹到這了,更多相關Java判定數值在開閉區間範圍內內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45