天天看點

Math、Random類為你展現數學之美 | 帶你學《Java語言進階特性》之二十

上一篇:一文帶你了解Java其他基礎類庫 | 帶你學《Java語言進階特性》之十九

在前幾節我們學習了Java基礎類庫,而在開發過程中難免會碰到數值運算相關的需求。Java為開發者提供了數值操作相關的類,用來支援簡單的數學運算,讓我們一起來了解一下吧。

【本節目标】

通過閱讀本節内容,你将接觸到Math類和Random類,了解其各個内部方法的功能,熟悉其調用方法,并能夠自己定制一些有特殊功能的數學方法,滿足現實開發中的特定需求。

程式就是一個數學的處理過程,是以在Java語言本身也提供有相應的數字處理的類庫支援。

Math數學計算類

Math類的主要功能是進行數學計算的操作類,提供有基礎的計算公式,這個類的構造方法被私有化了,而且該類之中提供的所有方法都是static型的方法,即:這些方法都可以通過類名稱直接調用。

public class JavaAPIDemo {
    public static void main(String[] args) throws Exception {
        System.out.println(Math.abs(-10.1));   //擷取絕對值:10.1
        System.out.println(Math.max(10.2,20.3));   //擷取最大值:20.3
        System.out.println(Math.log(5));   //擷取對數:1.6094379124341003
        System.out.println(Math.round(15.1));  //四舍五入:15
        System.out.println(Math.round(-15.5));   //四舍五入:-15
        System.out.println(Math.round(-15.51));   //四舍五入:-16
        System.out.println(Math.pow(10.2,20.2));   //幂:2.364413713591828E20
    }
}           

雖然在Math類裡面提供有四舍五入的處理方法,但是這個四舍五入在進行處理的時候是直接将小數點後的所有位進行進位處理,這個肯定不友善,那麼現在最友善的做法是可以實作指定位數的保留。

範例:自定義的四舍五入功能

class MathUtil {
    private MathUtil() {}
    /**
     * 實作資料的四舍五入操作
     * @param num   要進行四舍五入操作的數字
     * @param scale 四舍五入保留的小數位數
     * @return 四舍五入處理後的結果
     */
    public static double round(double num, int scale) {
        return Math.round(num * Math.pow(10, scale)) / Math.pow(10, scale);
    }
}
public class JavaAPIDemo {
    public static void main(String[] args) throws Exception {
        System.out.println(MathUtil.round(19.86273,2));     //19.86
    }
}           

Math類裡面提供的基本上都是基礎的數學公式,需要的時候需要自己重新整合。

Random随機數生成類

java.util.Random類的主要功能是産生随機數,這個類主要依靠内部提供的方法來完成:

産生一個不大于邊界的随機正整數:public int nextInt​(int bound);

範例:産生随機數

public class JavaAPIDemo {
    public static void main(String[] args) throws Exception {
        Random rand =new Random();
        for (int x = 0; x < 10; x++) {
            System.out.print(rand.nextInt(10)+"、");//6、2、2、0、5、7、3、1、9、5、
        }
    }
}           

在國内有一款36選7的彩票,那麼就可以利用Random實作随機生成彩票号。

範例:随機生成彩票号

  • 對于這裡面的數字肯定不能有0,不能夠重複。
public class JavaAPIDemo {
    public static void main(String[] args) throws Exception {
        int data[] = new int[7];   //開辟7個大小的空間
        Random rand = new Random();
        int foot = 0;        //操作data腳标
        while (foot < 7) {         //選擇7個數字
            int num = rand.nextInt(37);      //生成一個數字
            if (isUse(num, data)) {         //該數字現在可以使用
                data[foot++] = num;   //儲存資料
            }
        }
        java.util.Arrays.sort(data);
        for (int x = 0; x < data.length; x ++) {
            System.out.print(data[x]+ "、");    //7、8、9、18、19、25、34
        }
    }
    /**
     * 判斷傳入的數字是否為0以及是否在數組中存在
     *
     * @param num  要判斷的數字
     * @param temp 已存在的資料
     * @return 如果該數字不是0并且可以使用傳回true, 否則傳回false
     */
    public static boolean isUse(int num, int[] temp) {
        if (num == 0) {
            return false;
        }
        for (int x = 0; x < temp.length; x ++) {
            if (num == temp[x] ) {
                return false;
            }
        }
        return true;
    }
}           

以後這種随機的操作都可以利用Random來處理。

想學習更多的Java的課程嗎?從小白到大神,從入門到精通,更多精彩不容錯過!免費為您提供更多的學習資源。

本内容視訊來源于

阿裡雲大學 下一篇:"Big"資料類助力大型資料運算 | 帶你學《Java語言進階特性》之二十一 更多Java面向對象程式設計文章檢視此處