Adaptive Greeting System


Submit solution

Points: 10 (partial)
Time limit: 1.0s
Memory limit: 64M

Author:
Problem type

題目說明

請完成一個能根據使用者年齡和時間給予不同問候方式的程式。
程式會接收三個輸入:使用者的年齡(整數)、使用者的姓名(字串)和當前的小時數(整數,24小時制)。程式需要根據使用者的年齡和時間決定使用哪種方式問候:

  1. 首先根據時間判斷時段:
    • 若時間在 5-11 點(含),則為早上(MORNING)
    • 若時間在 12-17 點(含),則為下午(AFTERNOON)
    • 若時間在 18-22 點(含),則為晚上(EVENING)
    • 其餘時間為深夜(EARLY_MORNING)
  2. 然後根據年齡和時段組合問候語:
    • 若年齡小於 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]?"

您的任務是完成程式中缺少的四個函數:

  1. determineTimeOfDay - 根據小時數判斷時段
  2. checkAgeThreshold - 檢查年齡是否小於閾值(18歲)
  3. generateYoungGreeting - 為年輕使用者生成問候語
  4. 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

There are no comments at the moment.