摘要:原本的代碼當(dāng)中,很多地方都有產(chǎn)生隨機(jī)數(shù)這一項,但是都各有各的寫法,十分不統(tǒng)一。想了想還是統(tǒng)一寫個隨機(jī)數(shù)工具類來解決,也方便后期的調(diào)用。
事件起因
最近大部分精力都投入到公司系統(tǒng)的重構(gòu)上,經(jīng)歷了幾波人之手的代碼,改起來真是苦不堪言。
原本的代碼當(dāng)中,很多地方都有產(chǎn)生隨機(jī)數(shù)這一項,但是都各有各的寫法,十分不統(tǒng)一。
想了想還是統(tǒng)一寫個隨機(jī)數(shù)工具類來解決,也方便后期的調(diào)用。
/** * 隨機(jī)數(shù)工具類 * Created by zhh on 2017/08/01. */ public class RandomUtils { /** * 生成指定區(qū)間隨機(jī)數(shù) (min, max) * @param min 區(qū)間最小值(不包含) * @param max 區(qū)間最大值(不包含) * @return */ public static int genNum(int min, int max) { if (min >= max - 1) { // 自行異常處理, 此時簡單返回0 return 0; } Random random = new Random(); return random.nextInt(max - min - 1) + min + 1; } /** * 生成指定區(qū)間隨機(jī)數(shù) [min, max) * @param min 區(qū)間最小值(包含) * @param max 區(qū)間最大值(不包含) * @return */ public static int genNumIncludeMin(int min, int max) { if (min >= max) { // 自行異常處理, 此時簡單返回0 return 0; } Random random = new Random(); return random.nextInt(max - min) + min; } /** * 生成指定區(qū)間隨機(jī)數(shù) (min, max] * @param min 區(qū)間最小值(不包含) * @param max 區(qū)間最大值(包含) * @return */ public static int genNumIncludeMax(int min, int max) { return genNumIncludeMin(min, max) + 1; } /** * 生成指定區(qū)間隨機(jī)數(shù) [min, max] * @param min 區(qū)間最小值(包含) * @param max 區(qū)間最大值(包含) * @return */ public static int genNumIncludeMinAndMax(int min, int max) { if (min >= max + 1) { // 自行異常處理, 此時簡單返回0 return 0; } Random random = new Random(); return random.nextInt(max - min + 1) + min; } /** * 生成指定長度隨機(jī)數(shù) * @param len 指定長度 * @return */ public static int genNumByLen(int len) { if (len < 1 || len > 9) { // 自行異常處理, 此時簡單返回0 return 0; } return Integer.valueOf(genNumStrByLen(len)); } /** * 生成指定長度隨機(jī)數(shù) * @param len 指定長度 * @return */ public static String genNumStrByLen(int len) { if (len < 1) { // 自行異常處理, 此時簡單返回"0" return "0"; } StringBuilder sb = new StringBuilder(); for (int i = 0; i < len; i++) { if (i == 0) { sb.append(genNumIncludeMax(0, 9)); } else { sb.append(genNumIncludeMinAndMax(0, 9)); } } return sb.toString(); } }代碼用例
每個方法對應(yīng)我都寫了注釋,所以這里就不再過多解釋了。只是注明的異常處理的地方需要自行多帶帶拋異?;蛘咂渌幚?。
代碼用例如下(各行后所帶注釋為對應(yīng)的返回結(jié)果):
public static void main(String[] args) { System.out.println(genNum(2, 4)); // 3 System.out.println(genNumIncludeMin(2, 4)); // 2,3中隨機(jī)一個數(shù) System.out.println(genNumIncludeMax(2, 4)); // 3,4中隨機(jī)一個數(shù) System.out.println(genNumIncludeMinAndMax(2, 4)); // 2,3,4中隨機(jī)一個數(shù) System.out.println(genNumByLen(3)); // 100至999中隨機(jī)一個數(shù), 返回結(jié)果為數(shù)字 System.out.println(genNumStrByLen(3)); // 100至999中隨機(jī)一個數(shù), 返回結(jié)果為字符串 }
目前只是這些簡單的隨機(jī)數(shù)生成方法,后期若還有其他隨機(jī)數(shù)需求,我會在此繼續(xù)完善。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/71396.html
一、NumberUtils工具類org.apache.commons.lang3.math.NumberUtils/1.NumberUtils.isNumber():判斷字符串是否是數(shù)字/NumberUtils.isNumber(5.96);//結(jié)果是trueNumberUtils.isNumber(s5);//結(jié)果是falseNumberUtils.isNumber(0000000000596)...
摘要:我們平時開發(fā)時經(jīng)常會遇到需要圖片驗證碼,基礎(chǔ)的驗證碼包括了數(shù)字字母甚至可能有漢字。下面我給出一個簡單的工具類。驗證碼生成器圖片的寬度。 我們平時開發(fā)時經(jīng)常會遇到需要圖片驗證碼,基礎(chǔ)的驗證碼包括了數(shù)字、字母、甚至可能有漢字。下面我給出一個簡單的工具類。 package com..ankang.tony.util; import java.awt.Color; import java....
摘要:如果我們給出了構(gòu)造方法,系統(tǒng)將不再提供默認(rèn)的無參構(gòu)造方法。概念方便在沒有創(chuàng)建對象的情況下來進(jìn)行調(diào)用方法變量。因為它的成員全部是靜態(tài)的所以私有了構(gòu)造方法獲取隨機(jī)數(shù)的方法返回帶正號的值,該值大于等于 1.構(gòu)造方法Constructor概述和格式(掌握) A:構(gòu)造方法概述和作用 給對象的數(shù)據(jù)(屬性)進(jìn)行初始化 B:構(gòu)造方法格式特點 a:方法名與類名相同(大小寫也要與類名一致) b:...
摘要:接下來,作者從密碼算法的誤用著手,針對一些常量,改進(jìn)了靜態(tài)分析工具。具體來說,就是在的基礎(chǔ)上做了動態(tài)分析方法和靜態(tài)分析方法相結(jié)合的策略,在線記錄文件,離線檢測分析,使得整個工具更加完善。 ...
摘要:類提供方法和方法來通知系統(tǒng)進(jìn)行垃圾回收清理系統(tǒng)資源,并提供了和方法來加載文件和動態(tài)鏈接庫。返回按照標(biāo)準(zhǔn)的規(guī)定,對兩個參數(shù)進(jìn)行余數(shù)運算。 與用戶互動 運行Java程序的參數(shù) //Java程序入口:main()方法 public static void main(String[] args){...} public修飾符:Java類由JVM調(diào)用,為了讓JVM可以自由調(diào)用這個main()方...
閱讀 3509·2019-08-30 10:54
閱讀 3232·2019-08-29 16:38
閱讀 2269·2019-08-26 14:06
閱讀 1568·2019-08-23 15:39
閱讀 3100·2019-08-23 15:37
閱讀 2941·2019-08-23 13:50
閱讀 3257·2019-08-22 17:14
閱讀 2437·2019-08-22 15:44