题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。
解题思路:
这题目要求根据输入的星期几的第一个字母来判断是星期几,如果第一个字母相同,则继续判断第二个字母。我们可以实现一个函数,接受输入的星期首字母,并返回对应的星期。
- 使用if-else分支判断:根据输入的第一个字母进行分支判断,再根据需要,进一步判断第二个字母。
- 使用哈希表:构建一个哈希表,将每个字母映射到对应的星期几,然后根据输入的字母查表得到结果。
- 使用Switch语句:使用Switch语句进行多重条件判断,根据不同的输入字母输出对应的星期几。
现在,让我们使用这三种方法来实现根据输入的星期首字母判断星期几。
方法1: 使用if-else分支判断
- 实现代码:
import java.util.Scanner;
public class WeekdayCalculator {
public static String determineDay(char firstChar, char secondChar) {
String day;
if (firstChar == 'm') {
if (secondChar == 'o')
day = "Monday";
else
day = "None";
} else if (firstChar == 't') {
if (secondChar == 'u')
day = "Tuesday";
else if (secondChar == 'h')
day = "Thursday";
else
day = "None";
} else if (firstChar == 'w') {
day = "Wednesday";
} else if (firstChar == 'f') {
day = "Friday";
} else if (firstChar == 's') {
if (secondChar == 'a')
day = "Saturday";
else if (secondChar == 'u')
day = "Sunday";
else
day = "None";
} else {
day = "None";
}
return day;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter the first letter of the day: ");
char firstChar = scanner.next().charAt(0);
System.out.print("Enter the second letter of the day: ");
char secondChar = scanner.next().charAt(0);
String day = determineDay(firstChar, secondChar);
if (day.equals("None"))
System.out.println("Invalid input.");
else
System.out.println("The day is: " + day);
}
}
- 优点:
- 直观易懂,基于星期首字母的定义。
- 简单,不依赖特定的语言或库。
- 缺点:
- 可能需要多重嵌套的条件判断,代码可能较长。
方法2: 使用哈希表
- 解题思路:
- 使用哈希表将输入的字母与对应的星期几建立映射关系,根据输入的字母查找哈希表得到结果。
- 实现代码:
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class WeekdayCalculator {
public static String determineDay(char firstChar, char secondChar) {
Map<String, String> dayMap = new HashMap<>();
dayMap.put("mo", "Monday");
dayMap.put("tu", "Tuesday");
dayMap.put("we", "Wednesday");
dayMap.put("th", "Thursday");
dayMap.put("fr", "Friday");
dayMap.put("sa", "Saturday");
dayMap.put("su", "Sunday");
String input = "" + firstChar + secondChar;
return dayMap.getOrDefault(input, "None");
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter the first letter of the day: ");
char firstChar = scanner.next().charAt(0);
System.out.print("Enter the second letter of the day: ");
char secondChar = scanner.next().charAt(0);
String day = determineDay(firstChar, secondChar);
if (day.equals("None"))
System.out.println("Invalid input.");
else
System.out.println("The day is: " + day);
}
}
- 优点:
- 更具扩展性,易于维护和修改映射关系。
- 不需要多重嵌套的条件判断。
- 缺点:
- 需要额外的哈希表数据结构,可能会稍微增加代码复杂度。
方法3: 使用Switch语句
- 解题思路:
- 使用Switch语句进行多重条件判断,根据不同的输入字母输出对应的星期几。
- 实现代码:
import java.util.Scanner;
public class WeekdayCalculator {
public static String determineDay(char firstChar, char secondChar) {
String day;
switch (firstChar) {
case 'm':
if (secondChar == 'o')
day = "Monday";
else
day = "None";
break;
case 't':
if (secondChar == 'u')
day = "Tuesday";
else if (secondChar == 'h')
day = "Thursday";
else
day = "None";
break;
case 'w':
day = "Wednesday";
break;
case 'f':
day = "Friday";
break;
case 's':
if (secondChar == 'a')
day = "Saturday";
else if (secondChar == 'u')
day = "Sunday";
else
day = "None";
break;
default:
day = "None";
}
return day;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter the first letter of the day: ");
char firstChar = scanner.next().charAt(0);
System.out.print("Enter the second letter of the day: ");
char secondChar = scanner.next().charAt(0);
String day = determineDay(firstChar, secondChar);
if (day.equals("None"))
System.out.println("Invalid input.");
else
System.out.println("The day is: " + day);
}
}
- 优点:
-
使用Switch语句简化了代码。
-
简洁,易读。
-
- 缺点:
- 相对于哈希表法,需要进行多次条件判断。
总结和推荐:
- 在这种特定问题中,三种方法都能够实现正确的功能。
- 从代码简洁度、通用性、效率等方面考虑,方法2(使用哈希表)可能是最好的选择,因为它能够达到较好的效率,同时不需要依赖额外数据结构。
- 在实际情况中,可以根据问题的复杂度、代码的可维护性和可扩展性来选择最适合的实现方法。