解题思路:

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分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论