天空路1049號 之 地下圖書館
書架:112_1 MidtermNO_13
java
exam
if - else if
撰寫人KVJK_2125Wen, Nov 06, 2024 22:00(UTC+8)
考試日期Wen, Nov 06, 2024 13:30(UTC+8)
以下兩表的計算方式,輸入平日(1)或假日(2),再輸入白天(3)或夜間(4)後,接著輸入里程數,並計算出計程車車資。
平日 | 距離 | 價錢 |
---|---|---|
白天單程 | 1500公尺 | 70元 |
白天續程 | 300公尺 | 5元 |
夜間單程 | 1250公尺 | 70元 |
夜間續程 | 250公尺 | 5元 |
假日 | 距離 | 價錢 |
---|---|---|
白天單程 | 1500公尺 | 80元 |
白天續程 | 300公尺 | 10元 |
夜間單程 | 1250公尺 | 80元 |
夜間續程 | 250公尺 | 10元 |
Step1.
平日、假日、日間、夜間均使用字串判斷輸入,里程數設定為float。
Step2.
設定一變數taxiM
,用來存放轉換成公尺的里程數:
float taxiM = taxiKm * 1000;
Step3.
設定一變數total
,存放總共的車資;
設定一變數sthan
及plus
,將會在程式碼中,作為計算多出單程的里程數。
Step4.
程式碼中,首先判斷輸入1或是2(即平日或是假日)。
這邊使用switch-case
或是if
都可。我一開始是使用switch-case
,考試後半才更改成if
。
Step5.
接著,判斷輸入3或是4(即日間或夜間)。
同樣使用switch-case
或是if
都可,不過要小心自己被自己寫的程式碼混淆(that's me)。
Step6.
判斷完1、2、3及4之後,接下來的邏輯都是一樣的。
以1接三(即平日的日間)舉例來說:
– a. 如果里程數不超過1500公尺的話(即<=1500
),總車資就是1500元。 超過則繼續判斷。
– b. 因為超過單程的里程數,因此車資可以先加單程的價格。
– c. 將sthan
用來計算多出單程里程數多少。
– d. 若是多出的里程數不多於一次續程里程數(即<=300
),將車資加上一次續程里程數的價錢;若是多出的里程數大於一次續程里程數,則將多餘的里程數乘上一次里程數的價錢,並加在車資上。
.equals()
:現在程式碼中可以看到,taxiDay.equals("1")
來判斷字串是否相符。其實原本只是單純的使用==
來判斷,但是因為沒辦法判斷,因此在考試中途選擇換成.equals()
。plus = (int)sthan / 250
:原本並沒有用(int)
,但是小數點後的數字會影響到下一行的乘法結果,於是在此加上`(int)``。這個沒有做為考試答案上交。