请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。
本题考察的是条件分支逻辑的处理能力,尤其是对英文星期名称首字母重复情况的处理。英文中七个星期的单词如下:
Monday(星期一)→ M
Tuesday(星期二)→ T
Wednesday(星期三)→ W
Thursday(星期四)→ T
Friday(星期五)→ F
Saturday(星期六)→ S
Sunday(星期日)→ S
可以看到:
T 开头的有 Tuesday 和 Thursday;
S 开头的有 Saturday 和 Sunday;
其余 M、W、F 均唯一。
因此程序需要:
接收用户输入的第一个字母;
若为 T 或 S,则进一步要求输入第二个字母以区分;
对大小写不敏感(即 't' 和 'T' 视为相同);
对非法输入(如长度不为 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("输入错误,只能输入一个字母,程序结束!");
}
}
}补充说明:此题常用于编程入门教学,旨在训练学生对条件判断、字符处理和用户交互的理解。虽然逻辑简单,但涵盖了输入验证、大小写处理、分支嵌套等基础而重要的编程技能。在实际开发中,类似逻辑也常见于命令行工具、菜单选择系统等场景。