蓝桥杯 报时助手(Java)

解题思路:把所有可能出现的结果放在数组当中,按照相应的序号,对号输出,这是一种很好的解题思路,特别是此题时分的英语表示一共就24种情况,按照一定的规律进行拼凑,就能得出正确答案。

首先来说处理时位,一共24个小时,分两种情况,一种是小于二十的,直接可以对位输出,剩下的求余也可求的。

然后再来处理分位,一共有六十分钟,比较麻烦,但总体思路与上相似,可以进行求余操作,然后得出正确答案,当然这是要建立在分位不为0的情况下,若为0直接输出o’ clack,

解题难点:如何利用24个单词进行巧妙地拼凑,特别是处理分位时,我在本题中选择了开关语句,如果是一连串判断分支,会显得十分繁琐。


import java.util.Scanner;

public class 报时助手 {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int h = in.nextInt();
		int m = in.nextInt();
		
		String[] time = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen","sixteen", "seventeen", "eighteen", "nineteen", "twenty","thirty","forty","fifty"};
		//首先来处理时位的情况
		if(h <= 20)
			System.out.print(time[h]+" ");
		else {
			System.out.print(time[20]+ " "+time[h%20]+" ");
		}
		//再处理分位的情况
		if(m != 0) {
			//对不同时间段做不同处理
			switch(m/10) {
				case 2:{
					if(m == 20) 
						System.out.println(time[20]);
					else
						System.out.println(time[20]+" "+time[m%20]);
					break;
				}
				case 3:{
					if(m == 30) 
						System.out.println(time[21]);
					else
						System.out.println(time[21]+" "+time[m%30]);
					break;
				}
				case 4:{
					if(m == 40) 
						System.out.println(time[22]);
					else
						System.out.println(time[22]+" "+time[m%40]);
					break;
				}
				case 5:{
					if(m == 50) 
						System.out.println(time[23]);
					else
						System.out.println(time[23]+" "+time[m%50]);
					break;
				}
				default:{
					System.out.println(time[m]);break;
				}
			}
		}
		else
			System.out.println("o'clock");
	}
}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值