原题链接:蓝桥杯基础练习VIP-时间转换
解题思路: 首先确定h的值,h的值利用下标的形式来确定,并且给Map集合0-23的全部英文的0-23,这样对应的小标就是h的值,也是对应的m的0-23的值
其次了确定m的值,m的值分三种、第一种是否为0,就输出h+" o'clock"
第二种那就是0到20并且%10==0,就输出h+m的值,
第三种,就是21-29,31-39,41-49,51-59的值 这个的话,h值不变,但是m做二次拼接字符串的形式输出也就是
h+m+m来输出
注意事项:
参考代码:
import java.util.HashMap; import java.util.Scanner; public class Main { public static void main(String[] args) { //创建扫描器 Scanner scanner = new Scanner(System.in); //声明一个HashMap集合 HashMap<Integer,String> map = new HashMap<Integer, String>(); //声明数组,把0-23的值初始化,方便h的输出 String digit[] = {"zero","one","two","three","four","five","six","seven", "eight","nine","ten","eleven","twelve","thirteen","fourteen", "fifteen","sixteen","seventeen","eighteen","nineteen", "twenty","twenty one","twenty two","twenty three"}; //利用For来让数组的数给到hashMap中去,并且加入30,40,50这些值,方便m的输出 for(int i = 0;i<=23;i++) map.put(i, digit[i]); map.put(30, "thirty"); map.put(40, "forty"); map.put(50, "fifty"); //利用while的特性来输出数组 while(scanner.hasNext()) { //接收用户输入的数字,因为h的固定的下标,输入的是几,小标就是几,所以不用管h的值, //因为m的下标不确定,所以要判断,但是分为三种情况,第一种是否为0, //第二种那就是0到20并且%10==0, //第三种,就是21-29,31-39,41-49,51-59的值 int h = scanner.nextInt(),m = scanner.nextInt(); //为下面的拼接字符串做准备 String ans = ""; //首先判定m第一个数是否为0 if(m == 0) { //要是为0就输出h的下标的已经初始化了数据 ans = map.get(h)+" o'clock"; } //然后判定m是不是在0到20之间或者是%10==0 else if(0<m&&m<=20 || m%10==0){ //那么就输出他的h值和他的已经初始化了数据 ans = map.get(h) +" "+ map.get(m); } //就不是在0-20并且m!=0并且%10不等于0 else { //那么就输出h的值,在加上第一个m的已经初始化了数据和第二个m已经初始化了数据 ans = map.get(h)+" "+map.get(m/10*10)+" "+map.get(m%10); } //最后输出ans的值 System.out.println(ans); } //关掉扫描器 scanner.close(); } }
0.0分
2 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复