ブルーブリッジカップVIPタイムレポートアシスタント

問題の説明

現在の時間を考慮して、英語で読んでください。
  時間は時間hと分mで表されます。英語の読み取りでは、時間を読み取る方法は次のとおり
  です。mが0の場合、時間を読み取り、「3:00」などの「o'clock」を追加します。時」
  mが0でない場合は、時間を読み取ってから、5:30などのポイントを読み取り、「5 30」を読み取ります。
  時間と分は英語の数字で発音され、0-20は次のように発音されます:
  0 0、1:1、2:2、3:3、4:4、5:5、6:6、 7:7、8:8、9:9、10:10、11:11、12:12、13:13、14:14、15:15、16:16、17:17、18:18、19: 19、20:20。
  30は30と発音され、40は40、50は50と発音されます。
  20より大きく60より小さい数値の場合、最初に10全体を読み取り、次に1桁を追加します。たとえば、31は最初に30を読み取り、次に1を追加します。これは「31」として読み取られます。
  上記のルールによれば、21:54は「twenty one 54」、9:07は「nine seven」、0:15は「zero 15」を読み取ります。

入力フォーマット

入力には、時間の時間と分を表す2つの負でない整数hとmが含まれています。ゼロ以外の数値には、先行ゼロはありません。hは24未満、mは60未満です。

出力フォーマット

英語の出力時間と時間。

入力例

0 15

出力例

ゼロ15

問題解決コード

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));
//		}
		
	}

	
}

发布了186 篇原创文章 · 获赞 3233 · 访问量 24万+

おすすめ

転載: blog.csdn.net/qq_17623363/article/details/105626333