您的位置:首页 > 其它

(字符串的模式匹配4.7.12)POJ 2121 Inglish-Number Translator(将英文数字转换成阿拉伯数字)

2013-10-28 12:16 405 查看
package com.njupt.acm;

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class POJ_2121 {

public static void main(String[] args) {
/**
* negative, zero, one, two, three, four, five, six, seven,
* eight, nine, ten, eleven, twelve, thirteen, fourteen, fifteen,
*  sixteen, seventeen, eighteen, nineteen, twenty, thirty, forty, fifty,
*  sixty, seventy, eighty, ninety, hundred, thousand, million
*/
Map map = new HashMap();
map.put("negative", -1);
map.put("zero", 0);
map.put("one", 1);
map.put("two", 2);
map.put("three", 3);
map.put("four", 4);
map.put("five", 5);
map.put("six", 6);
map.put("seven", 7);
map.put("eight", 8);
map.put("nine", 9);
map.put("ten", 10);
map.put("eleven", 11);
map.put("twelve", 12);
map.put("thirteen", 13);
map.put("fourteen", 14);
map.put("fifteen", 15);
map.put("sixteen", 16);
map.put("seventeen", 17);
map.put("eighteen", 18);
map.put("nineteen", 19);
map.put("twenty", 20);
map.put("thirty", 30);
map.put("forty", 40);
map.put("fifty", 50);
map.put("sixty", 60);
map.put("seventy", 70);
map.put("eighty", 80);
map.put("ninety", 90);
map.put("hundred", 100);
map.put("thousand", 1000);
map.put("million", 1000000);

Scanner scanner = new Scanner(System.in);

while(scanner.hasNextLine()){
int sum = 0;//总数
int acc = 0;//累加到某一步的数
int flag = 1;
String str1 = scanner.nextLine();

str1 = str1.trim();
if(str1.length()==0){
break;
}
String[] strs = str1.split(" ");

for(String str : strs){
if(str.equals("hundred")){
acc *= (Integer)map.get(str);
}else if(str.equals("negative")){
flag = -1;
}else if(str.equals("thousand") || str.equals("million")){
sum += acc*((Integer)map.get(str));
acc=0;
}else {
acc += (Integer)map.get(str);
}
}

System.out.println(flag*(sum+acc));
}

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: