Adaptive Greeting System
題目說明
請完成一個能根據使用者年齡和時間給予不同問候方式的程式。
程式會接收三個輸入:使用者的年齡(整數)、使用者的姓名(字串)和當前的小時數(整數,24小時制)。程式需要根據使用者的年齡和時間決定使用哪種方式問候:
- 首先根據時間判斷時段:
- 若時間在 5-11 點(含),則為早上(MORNING)
- 若時間在 12-17 點(含),則為下午(AFTERNOON)
- 若時間在 18-22 點(含),則為晚上(EVENING)
- 其餘時間為深夜(EARLY_MORNING)
- 然後根據年齡和時段組合問候語:
- 若年齡小於 18 歲:
- 早上時段:輸出 "Good morning, [name]"
- 下午時段:輸出 "Good afternoon, [name]"
- 晚上時段:輸出 "Good evening, [name]"
- 深夜時段:輸出 "It's late, [name], you should rest"
- 若年齡大於或等於 18 歲:
- 早上時段:輸出 "Morning, [name]"
- 下午時段:輸出 "Afternoon, [name]"
- 晚上時段:輸出 "Evening, [name]"
- 深夜時段:輸出 "Working late, [name]?"
- 若年齡小於 18 歲:
您的任務是完成程式中缺少的四個函數:
determineTimeOfDay
- 根據小時數判斷時段checkAgeThreshold
- 檢查年齡是否小於閾值(18歲)generateYoungGreeting
- 為年輕使用者生成問候語generateAdultGreeting
- 為成年使用者生成問候語
請注意:除了實作這四個函數外,您不應修改程式中的其他部分。
程式模板
import java.util.Scanner;
public class AdaptiveGreetingSystem {
// 時段常數定義
public static final int EARLY_MORNING = 0;
public static final int MORNING = 1;
public static final int AFTERNOON = 2;
public static final int EVENING = 3;
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 讀取整數、字串和整數,分別代表用戶的年齡、名字和當前小時數
int age = scanner.nextInt();
String name = scanner.next();
int hour = scanner.nextInt();
// 呼叫determineTimeOfDay函數,根據小時數判斷當前時段
int timeOfDay = determineTimeOfDay(hour);
// 呼叫checkAgeThreshold函數,檢查年齡是否小於18
boolean isYoung = checkAgeThreshold(age);
// 根據年齡和時段,選擇適當的問候方式
if (isYoung) {
generateYoungGreeting(name, timeOfDay);
} else {
generateAdultGreeting(name, timeOfDay);
}
scanner.close();
}
// 這個函數根據小時數(0-23)判斷當前時段,返回對應的時段常數
public static ... determineTimeOfDay(...) {
...
}
// 這個函數檢查用戶的年齡是否小於18,參數是一個整數,返回值是一個boolean值
public static ... checkAgeThreshold(...) {
...
}
// 這個函數為年輕使用者(<18歲)根據時段生成適當的問候語
public static ... generateYoungGreeting(...) {
...
}
// 這個函數為成年使用者(>=18歲)根據時段生成適當的問候語
public static ... generateAdultGreeting(...) {
...
}
}
輸入值的格式
輸入包含三個值:
- 第一個值是一個整數,代表使用者的年齡
- 第二個值是一個字串,代表使用者的姓名
- 第三個值是一個整數,代表當前的小時數(24小時制,範圍為0-23)
三個值之間以空格分隔。
輸出值的格式
根據年齡和時段組合,輸出相應的問候語,具體規則如題目說明所示。
邊界條件提示
- 年齡範圍:本題假設輸入的年齡一定為非負整數
- 時間邊界:當時間恰好等於邊界值時(如5點、12點等),應歸屬於哪個時段?
- 時間範圍:本題假設輸入的小時數範圍為0-23的整數
- 使用者姓名:本題假設姓名僅包含英文字母,不含空格
範例輸入 #1
15 Jack 7
範例輸出 #1
Good morning, Jack
說明:年齡為15(小於18),時間為7點(早上時段),應輸出"Good morning, Jack"。
範例輸入 #2
10 Tommy 2
範例輸出 #2
It's late, Tommy, you should rest
說明:年齡為10(小於18),時間為2點(深夜時段),應輸出"It's late, Tommy, you should rest"。
Comments