解题思路: 首先确定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语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:521 |
拆分位数 (C语言代码)浏览:1327 |
【偶数求和】 (C语言代码)浏览:640 |
C语言程序设计教程(第三版)课后习题7.5 (C语言代码)浏览:519 |
C语言训练-求1+2!+3!+...+N!的和 (C语言代码)万恶的long long浏览:875 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:780 |
母牛的故事 (C语言代码)浏览:715 |
关于C语言变量位置的问题浏览:272 |
C语言程序设计教程(第三版)课后习题10.2 (C语言代码)浏览:679 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:401 |