3-4 資料型態的轉換
3-4-1 資料型態變換時機 (A)自動轉換 不同資料型態的變數之間,也可能經由運算子計算後,產生另一個數值表示,而其結果應該是哪一種資料型態。一般程式語言的規則如下: (1) 整數與整數運算(+、-、*、/)後輸出為整數,如 x = y + z,如 y、z 為整數,則輸出 x 為整數。 (2) 字元或字串大多以 ASCII 碼(整數型態)表示,字元之間或字元與整數之間計算後,所得結果也是 ASCII 碼(整數)。 (3) 整數與浮點數計算後輸出為浮點數。 值得注意的是,不同變數之間經過運算後,大多必須結果存入內一個變數內;如果被存入變數的資料型態不符合的話,編譯程式時(Compiler,javac)會告知資料型態錯誤。 (B)強迫轉換 在許多情況下,我們為了計算正確需要轉換原來變數的資料型態,或是運算後轉換成比較合乎真實情況所需的資料型態。為了合乎這些需求,而必須將變數的資料型態轉換成其他資料型態,稱為『強迫轉換』;敘述格式如下:
上述功能為,無論原變數是任何資料型態,取出其內容並轉換成新的資料型態,範例如下: 無論原變數是任何資料型態,取出其內容並轉換成新的資料型態,範例如下:
在物件導向的程式語言上,物件類別與基本資料型態具有相同的屬性。我們可以任意轉換變數的資料型態;相同的,也可以任意轉換物件的類別型態。我們爾後再介紹此功能應用。 3-4-2 範例研討:兩整數相除結果 (A)程式功能:Ex3_4.java 由鍵盤輸入兩個整數,以兩數相除的範例,驗證是否有轉換資料型態可能產生不同的結果。期望程式操作介面如下:
(B)製作技巧分析: 兩整數相除僅能得到整數的結果,如果將其結果存入浮點數內,小數點部分也僅能補零(如 45/13 = 3.00);如欲得到小數點部分,則必須將其中某一整數轉換成浮點數。 (C)程式範例:
(D)程式重點分析:
3-4-3 自我挑戰:紀錄棒球打擊率 (A)程式功能:PM3_3.java 美國大聯盟某一球隊看上了熊隊的林智勝先生,派遣一位球探到台灣,觀察林智勝每次打擊,並紀錄他的打擊率。打擊率是累積方式計算出來的,每一球季開始到計算日當天,之前打擊次數除於安打數(打擊率 = 打擊次數 / 安打次數);球探每次輸入林智勝打擊次數與安打數,則計算出當時的打擊率如何(假設可連續輸入 2 次比賽、之前打擊次數為 50、安打數為 15 支)。期望系統操作介面如下:
(B)程式製作提示: 首先設定打擊累積次數(int total = 50)、安打累積次數(int hits = 15)、打擊率(float batting)、以及每場打擊次數(int numbers)與安打次數(int bingles),並給予適當初值。接著計算與顯示出之前打擊率多寡,再輸入每場比賽結果,並計算出當時打擊率;程式重點提示如下:
上述中『batting = (float)hits/total;』功能是強迫轉換變數型態。該敘述運作如下:原來 hits 為整數變數,取出他的內容再將他轉換成浮點數((float)hits),再除以 total,得到的結果是浮點數型態,最後將其存入 batting 變數內。 (C)擴充紀錄『長打率』功能: 僅紀錄『打擊率』並無法表示出打擊手的功力如何,球探增加紀錄林智勝的『長打率』變化情形。計算方式:長打率 = 壘打數 / 打數次數,其中壘打與打擊次數都是累加計算的,一壘打則累加 1 分、二壘打則 2 分、三壘打則 3 分、全壘打為 4 分。假設目前記錄為打擊累積次數(total = 50)、壘打數(base = 30),請擴充上述範例,增加可記錄『長打率』(目前 ops = 30/50 = 0.6)的功能。 |
翻轉工作室:粘添壽
Java 程式設計(一) 含程式邏輯
翻轉電子書系列:
|