|
3-5 常用的數學套件 - Math
內容:
3-5-1 內定數學套件
大多數程式語言的編譯器,大多會將較常用的數學函數製作成程式庫存函數,使用者可以直接引用,不用為這些函數的產生而苦惱。傳統語言則稱之為『數學庫存函數』;然而,在 Java 的編譯器則稱為『數學套件』。也就是說,Java 編譯器將一些較常用的程式函數,依照其屬性分別製作成多個程式套件。另外,依照檔案儲存方式的樹狀結構,來存放與引用套件。儲存架構以 java 為樹根,在它之下再分別建立各種不同屬性的套件,如 java.lang、java.util、java.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 = 5、y = 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 自我挑戰:麻將骰子比大小
(A)PM3_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 程式設計(一) 含程式邏輯
翻轉電子書系列:
|