源本科技 | 码上会

星期判断问题

2026/02/07
10
0

题目

请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。

说明

本题考察的是条件分支逻辑的处理能力,尤其是对英文星期名称首字母重复情况的处理。英文中七个星期的单词如下:

  • Monday(星期一)→ M

  • Tuesday(星期二)→ T

  • Wednesday(星期三)→ W

  • Thursday(星期四)→ T

  • Friday(星期五)→ F

  • Saturday(星期六)→ S

  • Sunday(星期日)→ S

可以看到:

  • T 开头的有 Tuesday 和 Thursday;

  • S 开头的有 Saturday 和 Sunday;

  • 其余 M、W、F 均唯一。

因此程序需要:

  1. 接收用户输入的第一个字母;

  2. 若为 T 或 S,则进一步要求输入第二个字母以区分;

  3. 对大小写不敏感(即 't' 和 'T' 视为相同);

  4. 对非法输入(如长度不为 1、非有效字母等)给出错误提示。

该程序使用 switch-case 结构处理主逻辑,并在冲突情况下嵌套 if-else 判断第二字母,是一种清晰且结构良好的实现方式。

运行示例

请输入星期的第一个字母:
s
由于星期六(Saturday)与星期日(Sunday)均以字母S开头,故需输入第二个字母才能正确判断:u
星期日(Sunday)

另一个示例:

请输入星期的第一个字母:
T
由于星期二(Tuesday)与星期四(Thursday)均以字母T开头,故需输入第二个字母才能正确判断:h
星期四(Thursday)

错误输入示例:

请输入星期的第一个字母:
x
输入错误,不能识别的星期值第一个字母,程序结束!

或:

请输入星期的第一个字母:
tt
输入错误,只能输入一个字母,程序结束!

👈点击左箭头查看答案(一定要在自己思考并实现后再看参考答案哦!)

规律分析

  • 英文星期名称首字母分布具有部分唯一性

  • 冲突仅出现在 T(Tuesday/Thursday)S(Saturday/Sunday)

  • 第二字母可明确区分冲突项:

    • T + u → Tuesday

    • T + h → Thursday

    • S + a → Saturday

    • S + u → Sunday

  • 程序需具备输入合法性校验(长度为 1、字母类型);

  • 应支持大小写不敏感输入,提升用户体验。

程序实现

import java.util.Scanner;

public class Demo {
    public static void main(String[] args) {
        char weekSecond; // 保存第二字母
        Scanner in = new Scanner(System.in); // 接收用户输入
        System.out.println("请输入星期的第一个字母:");
        String letter = in.next();
        
        if (letter.length() == 1) { // 判断用户控制台输入字符串长度是否是一个字母
            char weekFirst = letter.charAt(0); // 取第一个字符
            switch (weekFirst) {
                case 'm':
                case 'M':
                    System.out.println("星期一(Monday)");
                    break;
                case 't':
                case 'T':
                    System.out.print("由于星期二(Tuesday)与星期四(Thursday)均以字母T开头,故需输入第二个字母才能正确判断:");
                    letter = in.next();         
                    if (letter.length() == 1) {
                        weekSecond = letter.charAt(0);
                        if (weekSecond == 'U' || weekSecond == 'u') {
                            System.out.println("星期二(Tuesday)");
                            break;
                        } else if (weekSecond == 'H' || weekSecond == 'h') {
                            System.out.println("星期四(Thursday)");
                            break;
                        } else {
                            System.out.println("Error!");
                            break;
                        }
                    } else {
                        System.out.println("输入错误,只能输入一个字母,程序结束!");
                        break;
                    }
                case 'w':
                case 'W':
                    System.out.println("星期三(Wednesday)");
                    break;
                case 'f':
                case 'F':
                    System.out.println("星期五(Friday)");
                    break;
                case 's':
                case 'S':
                    System.out.print("由于星期六(Saturday)与星期日(Sunday)均以字母S开头,故需输入第二个字母才能正确判断:");
                    letter = in.next();
                    if (letter.length() == 1) {
                        weekSecond = letter.charAt(0);
                        if (weekSecond == 'A' || weekSecond == 'a') {
                            System.out.println("星期六(Saturday)");
                            break;
                        } else if (weekSecond == 'U' || weekSecond == 'u') {
                            System.out.println("星期日(Sunday)");
                            break;
                        } else {
                            System.out.println("Error!");
                            break;
                        }
                    } else {
                        System.out.println("输入错误,只能输入一个字母,程序结束!");
                        break;
                    }
                default:
                    System.out.println("输入错误,不能识别的星期值第一个字母,程序结束!");
                    break;
            }
        } else {
            System.out.println("输入错误,只能输入一个字母,程序结束!");
        }
    }
}

补充说明:此题常用于编程入门教学,旨在训练学生对条件判断、字符处理和用户交互的理解。虽然逻辑简单,但涵盖了输入验证、大小写处理、分支嵌套等基础而重要的编程技能。在实际开发中,类似逻辑也常见于命令行工具、菜单选择系统等场景。