Descripción del problema
Dada la hora actual, léala en inglés.
El tiempo se expresa en horas h y minutos M. En la lectura en inglés, la forma de leer una hora es:
si m es 0, luego lea la hora, luego agregue "en punto", como 3:00 lea "tres" en punto ".
Si m no es 0, lea el tiempo y luego lea los puntos, como 5:30, lea "cinco y media".
Las horas y los minutos se pronuncian en números ingleses, 0-20 se pronuncia como:
0: cero, 1: uno, 2: dos, 3: tres, 4: cuatro, 5: cinco, 6: seis, 7: siete, 8: ocho, 9: nueve, 10: diez, 11: once, 12: doce, 13: trece, 14: catorce, 15: quince, 16: dieciseis, 17: diecisiete, 18: dieciocho, 19: diecinueve, veinte y veinte.
30 se pronuncia treinta, 40 es cuarenta y 50 es cincuenta.
Para números mayores que 20 y menores que 60, primero lea los diez completos, luego agregue los dígitos individuales. Por ejemplo, 31 lee primero 30 y luego agrega 1, que se lee como "treinta y uno".
De acuerdo con la regla anterior, 21:54 dice "veintiuno cincuenta y cuatro", 9:07 dice "nueve siete" y 0:15 dice "cero quince".
Formato de entrada
La entrada contiene dos enteros no negativos h y m, que representan las horas y minutos de tiempo. Los números distintos de cero no tienen ceros a la izquierda. h es menor que 24, m es menor que 60.
Formato de salida
Inglés salida de tiempo y tiempo.
Entrada de muestra
0 15
Salida de muestra
cero quince
Código de resolución de problemas
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Scanner;
public class Main {
static Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
Map<Integer, String> maps = new HashMap<Integer, String>();
maps.put(1, "");
String str = "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";
String [] strArr = str.split(",");
for (int i = 0; i < strArr.length; i++) {
String str2Arr[] = strArr[i].split(":");
maps.put(Integer.valueOf(str2Arr[0]),str2Arr[1]);
}
//输入日期
int h = sc.nextInt();//小于24(小时)
int m = sc.nextInt();//小于60(分)
//判断是否符合规则
if(h<=24 && m<=60) {
String strH="";
String strM="";
if(h<=20) {
strH = maps.get(h);
}else if(h>20) {
strH = maps.get(20) +" "+ maps.get(h-20);
}
//如果是整数就直接返回
if(m==20 || m==30 || m==40 || m==50) {
strM = maps.get(m);
}else if(m<20) {
//m=19?
strM = maps.get(m);
}else if(m>20 && m<30) {
//m=29?
//29-20=9
strM = maps.get(20)+" " + maps.get(m-20);
}else if(m>30 && m<40) {
//m=329?
//39-30=9
strM = maps.get(30)+" " + maps.get(m-30);
}else if(m>40 && m<50) {
//m=49?
//49-40=9
strM = maps.get(40)+" " + maps.get(m-40);
}else if(m>50 && m<60) {
//m=59?
//59-50=9
strM = maps.get(50) +" "+ maps.get(m-50);
}
System.out.println(strH+" "+strM);
}
// for (Integer key : maps.keySet()) {
// System.out.println(key+"--->"+maps.get(key));
// }
}
}