欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

蓝桥杯VIP试题 之 基础练习 报时助手 - JAVA

程序员文章站 2022-03-14 09:49:11
...

问题描述
  给定当前的时间,请用英文的读法将它读出来。
  时间用时h和分m表示,在英文的读法中,读一个时间的方法是:
  如果m为0,则将时读出来,然后加上“o’clock”,如3:00读作“three o’clock”。
  如果m不为0,则将时读出来,然后将分读出来,如5:30读作“five thirty”。
  时和分的读法使用的是英文数字的读法,其中0~20读作:
  0:zero, 1: one, 2:two, 3:three, 4:four, 5:five, 6:six, 7:seven, 8:eight, 9:nine, 10:ten, 11:eleven, 12:twelve, 13:thirteen, 14:fourteen, 15:fifteen, 16:sixteen, 17:seventeen, 18:eighteen, 19:nineteen, 20:twenty。
  30读作thirty,40读作forty,50读作fifty。
  对于大于20小于60的数字,首先读整十的数,然后再加上个位数。如31首先读30再加1的读法,读作“thirty one”。
  按上面的规则21:54读作“twenty one fifty four”,9:07读作“nine seven”,0:15读作“zero fifteen”。

输入格式
  输入包含两个非负整数h和m,表示时间的时和分。非零的数字前没有前导0。h小于24,m小于60。
输出格式
  输出时间时刻的英文。
  
样例输入
0 15
样例输出
zero fifteen

PS:我是用了最简单也是最容易想到的方法来实现这个问题,简单粗暴的使用了Switch-case的形式,来以此取值;写的过程中,我发现需要写很长,此时我有想起来一个比较方便的写法,留个思路给你参考下:将所有预定义的英文都存在字符串数组中,然后根据所需去数组中拿,最后拼接成结果,大体逻辑和Switch-case差不多,不知道你更偏向于哪一种呢?



import java.util.Scanner;

public class Main {

	public static void main(String[] args) {		
		    Scanner sc = new Scanner (System.in);
	        int h=sc.nextInt();	        
	        int m=sc.nextInt();
	        
	        String strRes = "";
	        if(h<=20){
	        	strRes = LookFor(h,true);
	        }else{
	        	strRes = LookFor(h-h%10,true);
	        	strRes += " ";
	        	strRes += LookFor(h%10,true);
	        }
	        strRes += " ";
	        if(m<=20){
	        	strRes += LookFor(m,false);
	        }else{
	        	
	        	strRes += LookFor(m-m%10,false);
	        	strRes += " ";
	        	strRes += LookFor(m%10,false);
	        }
	       System.out.println(strRes);
	}
	
	public static String LookFor(int num, boolean isHour){
		switch(num){ 			
			case 0:
				if(isHour)
					return "zero"; 
				else
					return "o'clock"; 
			case 1: 
				return "one"; 
			case 2:
				return "two"; 
			case 3:
				return "three";
			case 4:
				return "four"; 
			case 5:
				return "five"; 
			case 6:
				return "six"; 
			case 7:
				return "seven";
			case 8:
				return "eight"; 
			case 9 :
				return "nine";
			case 10:
				return "ten"; 
			case 11:
				return "eleven";
			case 12:
				return "twelve";
			case 13:
				return "thirteen";
			case 14:
				return "fourteen";
			case 15:
				return "fifteen"; 
			case 16:
				return "sixteen"; 
			case 17:
				return "seventeen";
			case 18:
				return "eighteen";
			case 19:
				return "nineteen";
			case 20:
				return "twenty"; 
			case 30:
				return "thirty"; 
			case 40:
				return "forty"; 
			case 50:
				return "fifty"; 
			default:
				return "";
		}	
	}
}

蓝桥杯VIP试题 之 基础练习 报时助手 - JAVA