解题思路:
1.首先需要注意无论时或分读数格式都是相同的(唯一区别只是在读0时,分不读而已)
2.在整十的数以及二十以下的数是不需要操作的,直接打印就好
注意事项:
在打印需要转化的数时,先将个位数字单独取出,让后减去个位,就得到了一个整十数,最后将这个两个数分别打印就好
参考代码:
import java.util.HashMap;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int h = in.nextInt(); //时
int m = in.nextInt(); //分
HashMap<Integer, String> data = new HashMap<>();
// 录入所需关键词
data.put(0, "zero");
data.put(1, "one");
data.put(2, "two");
data.put(3, "three");
data.put(4, "four");
data.put(5, "five");
data.put(6, "six");
data.put(7, "seven");
data.put(8, "eight");
data.put(9, "nine");
data.put(10,"ten");
data.put(11,"eleven");
data.put(12,"twelve");
data.put(13,"thirteen");
data.put(14,"fourteen");
data.put(15,"fifteen");
data.put(16,"sixteen");
data.put(17,"seventeen");
data.put(18,"eighteen");
data.put(19,"nineteen");
data.put(20,"twenty");
data.put(30,"thirty");
data.put(40,"forty");
data.put(50,"fifty");
// 时 一定要输出,所以直接打印即可
printStr(h, data);
// 分的输出格式取决是否为0
if (m == 0) {
System.out.println("o'clock");
} else {
printStr(m, data);
}
}
/**
* 将数字转化为英文,时和分的转化格式相同
* @param num 需要转化的数字
* @param data 对应的转化表
*/
private static void printStr(int num, HashMap<Integer, String> data) {
// 只有在大于20时才需要特殊的格式打印
if (num > 20) {
int n1 = num % 10; // 取出个位数字,单独打印
int n2 = num - n1; // 取出十位数字,整十打印
// 整十数字直接打印即可
System.out.print(data.get(n2)+" ");
// 个位数字需要考虑是否为零,为零就不打印
if (n1 != 0) {
System.out.print(data.get(n1)+ " ");
}
} else {
// 不大于20直接输出即可
System.out.print(data.get(num)+ " ");
}
}
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复