1295 爱翻译

1295 爱翻译

Time Limit : 2000/1000 MS(Java/Others) | Memory Limit :65536/32768 KB(Java/Others)

Submits : 390 | Solved : 80

Description

英语是现在世界第一大语言,所以学好英语是very important,
但是宁波大学的某个大牛说:“我不怕,我可以写一个程序让各种语言
快速转换。”哎呀,学编程的,惹不起...溜...┈━═☆
咱不是大牛,但有追逐大牛的梦想,大牛的伟大程序不是随便能盗版出来的,
我们就做一个简单的翻译器,把阿拉伯数字转换为英文输出。

Input

小于10000的非负阿拉伯数字整数n。

Output

对应的英文,如样例,一个一行。

Sample Input

3923
5021

Sample Output

three thousand nine hundred twenty three
five thousand twenty one

HINT

 
  

Source

我写的代码已知PE,找不到哪儿格式错误
	package com.test;
	
	import java.util.HashMap;
	import java.util.Map;
	import java.util.Scanner;
	
	public class test1 {
		private static Scanner sc;
	
		public static void main(String[] args){
			sc=new Scanner(System.in);
			Map map=new HashMap();
			map.put(0,"zero ");
			map.put(1,"one ");
			map.put(2,"two ");
			map.put(3,"three ");
			map.put(4,"four ");
			map.put(5,"five ");
			map.put(6,"six ");
			map.put(7,"seven ");
			map.put(8,"eight ");
			map.put(9,"nine ");
			map.put(10, "ten ");
			map.put(11, "eleven ");
			map.put(12, "twelve ");
			map.put(13, "thirteen ");
			map.put(14, "fourteen ");
			map.put(15, "fifteen ");
			map.put(16,"sixteen ");
			map.put(17,"seventeen ");
			map.put(18,"eighteen ");
			map.put(19,"nineteen ");
			map.put(20,"twenty ");
			map.put(30,"thirty ");
			map.put(40,"forty ");
			map.put(50,"fifty ");
			map.put(60,"sixty ");
			map.put(70,"seventy ");
			map.put(80,"eighty ");
			map.put(90,"ninety ");
			map.put(100,"hundred ");
			map.put(1000,"thousand ");
			while(sc.hasNext()){
			int num=sc.nextInt();
			String str="";
			if(num/1000>0){
				str=map.get(num/1000).toString()+map.get(1000).toString();
				num=num%1000;
			}
			if(num/100>0){
				str+=map.get(num/100).toString()+map.get(100).toString();
				num%=100;
			}
			if(num/10>0){
				if(num/10==1){
					str+=map.get(num).toString();
					num=0;
				}
				else{
					int l=num/10*10;
					str+=map.get(l).toString();
				}
				num%=10;
			}
			if(num>0){
				str+=map.get(num).toString();
			}
			if(num==0&&str.equals("")){
				str+=map.get(0).toString();
			}
			if(!str.equals(""))
				System.out.println(str);
		}
		}
	}

朋友AC的代码
import java.util.Scanner;

public class Main{
	static String[] ans = new String[30];
	static int cnt = 0;
	public static void extend_a(char key) {
		switch(key) {
		case '1': ans[cnt++]= "one"; break;
		case '2': ans[cnt++]= "two"; break;
		case '3': ans[cnt++]= "three"; break;
		case '4': ans[cnt++]= "four"; break;
		case '5': ans[cnt++]= "five"; break;
		case '6': ans[cnt++]= "six"; break;
		case '7': ans[cnt++]= "seven"; break;
		case '8': ans[cnt++]= "eight"; break;
		case '9': ans[cnt++]= "nine"; break;
		}
	}
	
	public static void len_one(String key){
		char ch = key.charAt(0);
		if(ch != '0') {
			extend_a(ch);
		}
	}
	public static void len_two(String key){
		char ch = key.charAt(0);
		if(ch != '0') {
			if(ch == '1') {
				switch(key) {
				case "10": ans[cnt++]= "ten"; break;
				case "11": ans[cnt++]= "eleven"; break;
				case "12": ans[cnt++]= "twelve"; break;
				case "13": ans[cnt++]= "thirteen"; break;
				case "14": ans[cnt++]= "fourteen"; break;
				case "15": ans[cnt++]= "fifteen"; break;
				case "16": ans[cnt++]= "sixteen"; break;
				case "17": ans[cnt++]= "seventeen"; break;
				case "18": ans[cnt++]= "eighteen"; break;
				case "19": ans[cnt++]= "nineteen"; break;
				}
				return;
			} else{
				switch(ch) {
				case '2': ans[cnt++]= "twenty"; break;
				case '3': ans[cnt++]= "thirty"; break;
				case '4': ans[cnt++]= "forty"; break;
				case '5': ans[cnt++]= "fifty"; break;
				case '6': ans[cnt++]= "sixty"; break;
				case '7': ans[cnt++]= "seventy"; break;
				case '8': ans[cnt++]= "eighty"; break;
				case '9': ans[cnt++]= "ninety"; break;
				}
			}
		}
		String temp = "" + key.charAt(1);
		len_one(temp);
	}
	public static void len_three(String key){
		if(key.charAt(0) != '0') {
		extend_a(key.charAt(0));
		ans[cnt++] = "hundred";
		}
		String temp = "" + key.charAt(1) + key.charAt(2);
		len_two(temp);
	}
	public static void len_four(String key){
		extend_a(key.charAt(0));
		ans[cnt++] = "thousand";
		String temp = ""+key.charAt(1) + key.charAt(2) + key.charAt(3);
		len_three(temp);
	}
	public static void main(String[] args) throws Exception{
		Scanner in = new Scanner(System.in);
		while(in.hasNext()){
			String num = in.next();
			cnt = 0;
			switch(num.length()) {
			case 1: len_one(num); break;
			case 2: len_two(num); break;
			case 3: len_three(num); break;
			case 4: len_four(num); break;
			}
			for(int i = 0; i < cnt; ++i) {
				if(i == 0)System.out.print(ans[i]);
				else System.out.print(" " + ans[i]);
			}
			System.out.println();
		}
		in.close();
	}
}

你可能感兴趣的:(-----ACM水题-----,ACM算法入门)