目錄
<a name="背景介紹"></a>
背景介紹
題目描述:小明根據報名的人數預定若干球場,每個參加活動的人支付
30元,而小明要想球館支付總費用。
題目求解:一段時間后,需要計算小明的出納情況。
按照題目給出的條件,可以得出訂場策略如下:
- 記參加一次活動的人數為M
- T為可以立即確定的場地書,其計算公式為
M/6
- 記X為多出來的人數,其計算公式為
M%6
T | X | 訂場策略 |
---|---|---|
0 | <4 | 取消活動 |
0 | >=4 | 共訂一場 |
1 | <4 | 共訂兩場 |
2或3 | >=4 | 多訂一場 |
>3 | 任意 | 不多訂場 |
小明選擇的每塊場地的收費標準如下:
- 周一到周五
- 9:00~12:00 30元/時
- 12:00~18:00 50元/時
- 18:00~20:00 80元/時
- 20:00~22:00 60元/時
- 周六及周日
- 9:00~12:00 40元/時
- 12:00~18:00 50元/時
- 18:00~22:00 60元/時
輸入為字符串,其格式定義為
每一行代表一次活動,其格式為{活動時間 yyyy-MM-dd HH:mm~HH:mm} {人數}
每一行的時間不會有重疊,其時間必然是整小時。
<a name="設計思路"></a>
設計思路
將每次活動得出的結果視為一個對象
DetailSal
,將其封裝成為javaBean
根據題目給出的輸出格式,可以得出其屬性共有,活動時間,具體時刻,活動支出,活動收入,活動凈收入根據人數算出需要的場地數
private static int getMatchCount(int peoCount)
,peoCount為參加
本次活動的人數,函數返回值為得到的參加的場次數。條件中給出的為GMT時間,而場館收費是按照星期制的,所以需要完成轉換
private static int dayForWeek(String daytime)
daytime為輸入的時間格式,返回值直接對應題目條件在本體中,收費是按照時段收費的,所以需要按照參加活動的時間,進行分段處理。
private static boolean isIntime(String clockArea,int startClock)
是判斷開始的時間是否在一個時間范圍內,判斷完成后按照此段時間的計算公式即可得出最后結果,計算最后收費的函數為private static int getDetailSal(int beginClock,int stopClock,int startClock,int lastClock,int dayForweek)
此函數返回本次活動單場的費用,在getSalary()
函數中與得到的場次數運算,可得出本次活動的最后結果。在函數
public static DetailSal generateSummary(String input)
中完成對于輸入格式的檢驗,如果出錯的話,進行錯誤記錄
并完成對象的賦值工作,并在main函數對于結果進行匯總和輸出。
<a name="使用說明"></a>
使用說明
<a name="代碼導入"></a>
- 代碼導入
- 在Eclispe的“Package Explorer”面板中右鍵,在彈出的快捷菜單中找到“Import”并點擊
- 在"Import"窗口中選擇要導入的工程類型(本次導入類型為Exist File System),當然也可以使用搜索框進行關鍵字搜索,快速定位到工程類型
- 選擇目標tennis工程所在位置,選定后點擊"Finish"
- 正常導入后,會在“Package Explorer”看到你所導入的工程
<a name="運行代碼"></a>
- 代碼運行
*導入代碼以后
<a name="文件結構"></a>
目錄結構描述
├── Readme.md // help
├── bin // 二進制文件
│ ├── com
│ ├── test
│ └── UnitType
│
├── src // 代碼區域
│ ├── com // 主程序
│ ├── test //單元測試
│ └── UnitType // 對象
├── .classpath //classPath文件
├── .project //project文件
└── tools