Java 程式設計(一)  第 三章 算術運算式  上一頁    下一頁

 

3-5 常用的數學套件 - Math

內容:

  • 3-5-1 內定數學套件

  • 3-5-2 範例研討:找出最大/最小的數

  • 3-5-3 自我挑戰:麻將骰子比大小

3-5-1 內定數學套件

大多數程式語言的編譯器,大多會將較常用的數學函數製作成程式庫存函數,使用者可以直接引用,不用為這些函數的產生而苦惱。傳統語言則稱之為『數學庫存函數』;然而,在 Java 的編譯器則稱為『數學套件』。也就是說,Java 編譯器將一些較常用的程式函數,依照其屬性分別製作成多個程式套件。另外,依照檔案儲存方式的樹狀結構,來存放與引用套件。儲存架構以 java 為樹根,在它之下再分別建立各種不同屬性的套件,如 java.langjava.utiljava.network...等;接著再由某一套件下延伸出子套件,如 java.util.Scanner...等;依此類推,最後節點為子套件下的類別方法。

java.lang 套件中的一個 Math 共用類別,該目錄下(java.lang.Math)包含了許多有關數學函數的類別方法,表 3-1 中列出一些較常用的類別方法。又 java.lang 套件的類別方法,大多是較常用到的,因此 Java 編譯器會自動匯入,而不需宣告導入(import java.lang

3-1 常用 Math 套件的類別方法

方法

說明

abs(x)

回傳 x 的絕對值

exp(x)

回傳ex

log(x)

回傳 log x

max(x, y)

回傳 x, y 的較大值

min(x, y)

回傳 x, y 的較小值

pow(x, y)

回傳 xy

sqrt(x)

回傳 x 的平方根值

3-5-2 範例研討:找出最大/最小 數

A)程式功能:Ex3_5.java

人的自然行為中,由一堆數字中找出最大或最小數值,是易如反掌的;但要電腦來處裡可就不容易了。此範例功能是使用者任意輸入三個浮點數,電腦分別輸入其中最大與最小的數值為何。期望使用者操作介面如下:

*** 三個浮點數比較大小工具 ***

請輸入三個浮點數(val1 val2 val3) =>45.6 34.9 98.6

最大數 => 98.60

最小數 => 34.90

B)製作技巧分析:

由上述操作介面,表示需要連續輸入 3 個浮點數,再找出其中最大與最小數值。連續輸入資料則需利用 Scanner 套件才有此功能,因此程式開始需導入 java.util.Scanner,但僅寫 java.util.* 也可(表示導入 util 以下所有類別套件)。3 個數值輸入後,吾人再利用數學套件的大小比較函數來製作。找出較大函數 max(x, y),功能是回傳 x y 兩者之間較大的數值;如果 x = 5y = 8,執行 k = max(x, y) 之後,得到 k = 8 之結果;執行 k = min(x, y),得到 k = 5 結果。

C)程式範例:Ex3_5.java

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

// Ex3_5.java

 

import java.util.*;

public class Ex3_5 {    

   public static void main(String args[]) {

      Scanner keyin = new Scanner(System.in);

      float value1, value2, value3;

      float max, min;

      System.out.printf(“*** 三個浮點數比較大小工具 ***\n”);

      System.out.printf("請輸入三個浮點數(val1 val2 val3) =>");

      value1 = keyin.nextFloat();

      value2 = keyin.nextFloat();

      value3 = keyin.nextFloat();

     

      max = Math.max(value1, Math.max(value2, value3));

      min = Math.min(value1, Math.min(value2, value3));

 

      System.out.printf("最大數 => %.2f\n", max);

      System.out.printf("最小數 => %.2f\n", min);

   }

}

D)程式重點分析:

  • 11~13 value1 = keyin.nextFloat();。連續讀入 3 個浮點數,如果鍵盤沒有輸入的話(或不足 3 個),程式會等待輸入。

  • 15 max = Math.max(value1, Math.max(value2, value3));。功能是先取出 value2 value3 兩者之間較大的數值,該數值再與 value1 比較,得到兩者之間較大值並存入 max 變數內。

  • 16 min = Math.min(value1, Math.min(value2, value3));。如同第 15 行功能,但取出較小數值。

  • 18 :『System.out.printf("最大數 => %.2f\n", max);。列印 max 變數內容的格式是具有 2 個小數點位數的浮點數(%.2f)。

3-5-3 自我挑戰:麻將骰子比大小

APM3_4:程式功能

麻將桌上常有擲骰子比大小來決定取牌順序,請編寫一程式可輸入東、西、南、北所擲骰子的大小,最後輸出最大骰子的數目多少,操作如下:

請輸入東方所擲數目 (3~18) =>12

請輸入西方所擲數目 (3~18) =>15

請輸入南方所擲數目(3~18)  =>6

請輸入北方所擲數目(3~18)  =>17

最大數目 => 17

B)程式提示

….

   Scanner keyin = new Scanner(System.in);

   int value1, value2, value3, value4;

   int max;

   

   System.out.printf("請輸入東方所擲數目 (3~18) =>");

   value1 = keyin.nextInt();

翻轉工作室:粘添壽

 

Java 程式設計(一) 含程式邏輯

 

 

翻轉電子書系列: