题目:
给定当前的时间,请用英文的读法将它读出来。
时间用时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”。
样例输入:
0 15
样例输出:
zero fifteen
代码思路:
- 首先我个人考到这道题的基本逻辑思路是for循环里嵌套if语句判断。
- 由于题中大于20且小于60的数也要求用英文组合输出,所有针对这一需求可以使用switch语句来进行解决
- 用String类的语法来进行输出的字符串处理
具体知识点:
for循环、if语句判断,switch语句选择、String的方法使用
0
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 str="";
String str2="";
String shu[]={"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语句对小时进行判断,对于小于等于20,还是按数组对应位置输出
if (h<=20){
str=shu[h];
}
if (h>20&&h<60){//对大于20的采用取余的办法来对字符串进行拼接
int n;
if (h%10!=0){
n=h%10;
str=shu[20]+" "+shu[n];
}
}
if (m>=0&&m<60) {//判断分钟m是否在规定数据范围内
if (m==0){//将m的特殊值单一列出
str2="o'clock";
}
if (m>0&&m<=20){//对于m小于等于20可直接从数组中找出
str2=shu[m];
}
if(m>20&&m<60){
int n=m/10;//采用取整的方法配合switch语句对十位的单词进行确定
switch (n){//使用switch语句来对m的十位进行选择
case 2:
str2=shu[20];
break;
case 3:
str2=shu[21];
break;
case 4:
str2=shu[22];
break;
case 5:
str2=shu[23];
break;
}
if (m%10!=0){
m=m%10;//再次采用取余的方法来确定个位的单词
str2=str2+" "+shu[m];//将m的单词进行拼接
}
}
}
System.out.println(str+" "+str2);
}
}
因为是第一次写博客,所以如果有什么不足或者错误的地方请大家指教,我在后面改正并且逐渐完善自己的博客。
谢谢您的阅读和宝贵的时间!