1. 程式人生 > >Java工具類——數字計算工具 NumberUtil

Java工具類——數字計算工具 NumberUtil

  1. package com.luang.util.common;  
  2. import java.util.HashSet;    
  3. import java.util.Random;    
  4. import java.util.Set;    
  5. /** 
  6.  *  
  7.  * NumberUtil.java 
  8.  * 
  9.  * @desc 數字計算工具  
  10.  * @author Guoxp 
  11.  * @datatime Apr 7, 2013 3:52:29 PM 
  12.  * 
  13.  */
  14. publicclass NumberUtil {    
  15.     /**  生成不重複隨機數 
  16.      * 根據給定的最小數字和最大數字,以及隨機數的個數,產生指定的不重複的陣列  
     
  17.      * @param begin 最小數字(包含該數)   
  18.      * @param end 最大數字(不包含該數)   
  19.      * @param size 指定產生隨機數的個數   
  20.      */
  21.     publicint[] generateRandomNumber(int begin, int end, int size) {      
  22.         // 加入邏輯判斷,確保begin<end並且size不能大於該表示範圍    
  23.         if (begin >= end || (end - begin) < size) {      
  24.             returnnull;      
  25.         }             
  26.         // 種子你可以隨意生成,但不能重複    
  27.         int[] seed = newint[end - begin];       
  28.         for (int i = begin; i < end; i ++) {      
  29.             seed[i - begin] = i;      
  30.         }      
  31.         int[] ranArr = newint[size];      
  32.         Random ran = new
     Random();      
  33.         // 數量你可以自己定義。    
  34.         for (int i = 0; i < size; i++) {      
  35.             // 得到一個位置    
  36.             int j = ran.nextInt(seed.length - i);                 
  37.             // 得到那個位置的數值    
  38.             ranArr[i] = seed[j];      
  39.             // 將最後一個未用的數字放到這裡    
  40.             seed[j] = seed[seed.length - 1 - i];      
  41.         }      
  42.         return ranArr;      
  43.     }    
  44.     /**  生成不重複隨機數 
  45.      * 根據給定的最小數字和最大數字,以及隨機數的個數,產生指定的不重複的陣列   
  46.      * @param begin 最小數字(包含該數)   
  47.      * @param end 最大數字(不包含該數)   
  48.      * @param size 指定產生隨機數的個數   
  49.      */
  50.      public Integer[] generateBySet(int begin, int end, int size) {      
  51.         // 加入邏輯判斷,確保begin<end並且size不能大於該表示範圍    
  52.         if (begin >= end || (end - begin) < size) {      
  53.             returnnull;      
  54.         }      
  55.         Random ran = new Random();      
  56.         Set<Integer> set = new HashSet<Integer>();      
  57.         while (set.size() < size) {      
  58.             set.add(begin + ran.nextInt(end - begin));      
  59.         }      
  60.         Integer[] ranArr = new Integer[size];      
  61.         ranArr = set.toArray(new Integer[size]);      
  62.         //ranArr = (Integer[]) set.toArray();    
  63.         return ranArr;      
  64.     }    
  65.     /**  
  66.     * 判斷String是否是整數  
  67.     */
  68.     publicboolean isInteger(String s){    
  69.         if((s != null)&&(s!=""))    
  70.          return s.matches("^[0-9]*$");    
  71.         else
  72.          returnfalse;    
  73.     }    
  74.     /**  
  75.     * 判斷字串是否是浮點數  
  76.     */
  77.     publicboolean isDouble(String value) {    
  78.         try {    
  79.            Double.parseDouble(value);    
  80.            if (value.contains("."))    
  81.                returntrue;    
  82.            returnfalse;    
  83.         } catch (NumberFormatException e) {    
  84.            returnfalse;    
  85.         }    
  86.     }    
  87.     /**  
  88.     * 判斷字串是否是數字  
  89.     */
  90.     publicboolean isNumber(String value) {    
  91.         return isInteger(value) || isDouble(value);    
  92.     }    
  93.         //排序方法  
  94.     publicstaticvoid sort(int[] array) {// 小到大的排序  
  95.         int temp = 0;    
  96.         for (int i = 0; i < array.length; i++) {    
  97.             for (int j = i; j < array.length; j++) {    
  98.                 if (array[i] > array[j]) {    
  99.                     temp = array[i];    
  100.                     array[i] = array[j];    
  101.                     array[j] = temp;    
  102.                 }    
  103.             }    
  104.         }    
  105.     }    
  106.     /**  
  107.      * 是否是質數