编写一个程序,要求用户输入24小时制的时间,然后显示12小时制的时间。
输入格式:
输入在一行中给出带有中间的:符号(半角的冒号)的24小时制的时间,如12:34表示12点34分。当小时或分钟数小于10时,均没有前导的零,如5:6表示5点零6分。
提示:在scanf的格式字符串中加入:,让scanf来处理这个冒号。
输出格式:
在一行中输出这个时间对应的12小时制的时间,数字部分格式与输入的相同,然后跟上空格,再跟上表示上午的字符串AM或表示下午的字符串PM。如5:6 PM表示下午5点零6分。注意,在英文的习惯中,中午12点被认为是下午,所以24小时制的12:00就是12小时制的12:0 PM;而0点被认为是第二天的时间,所以是0:0 AM。
输入样例:
21:11
输出样例:
9:11 PM
实现思路:
我们要使用 String.split(":") 方法把时间字符串分割成小时和分钟部分,并将它们转换为整数。然后根据小时数来确定是上午还是下午,并进行相应的转换:如果小时数小于12,则是上午(AM),需要将0点转换为12点。如果小时数大于等于12,则是下午(PM),需要将大于12的小时数转换为12小时制,最后输出结果就行。
具体代码:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入24小时制时间(格式为HH:MM):");
String time24 = scanner.next();
String[] timeParts = time24.split(":");
int hour = Integer.parseInt(timeParts[0]);
int minute = Integer.parseInt(timeParts[1]);
String period;
if (hour < 12) {
period = "AM";
if (hour == 0) {
hour = 12;
}
} else {
period = "PM";
if (hour > 12) {
hour -= 12;
}
}
System.out.printf("%d:%d %s\n", hour, minute, period);
scanner.close();
}
运行结果:

1万+

被折叠的 条评论
为什么被折叠?



