来自华为
请您编写一个拼音与英文转换的函数,如果输入的电话号码是英文单词,输出对应的电话号码的中文拼音,如果输入的电话号码是中文拼音,输出对应的电话号码的英文单词。例如,输入“OneZeroDoubleThree”,则输出YiLingSanSan。拼音、英文读法见下表: Yi Er San Si Wu Liu Qi Ba Jiu Ling One Two Three Four Five Six Seven Eight Nine Zero 注意: 1、 每个单词均为首字母大写,遇到连续两个相同数字,输入可以前面加Double,输出不可以加Double。 输入描述: 由首字母大写组成的字符串,表示一个电话号码的英文单词或者中文读法。字符输入范围为数字 0、1、2、3、4、5、6、7、8、9的英文单词或者中文拼音。 输出描述: 输出: 根据输入的,输出对应的电话号码字符串。如果输入的电话号码是英文单词,输出对应的电话号码的中文拼音;如果输入的电话号码是中文拼音,输出对应的电话号码的英文单词。若输入非法,输出字符串“ERROR”。
注意:最终交付的函数代码中不要向控制台打印输出无关任何信息。 示例1 输入
OneTwoThreeFourFiveSixSevenEightNineZero 输出
YiErSanSiWuLiuQiBaJiuLing 收起答题卡
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
public class ChineseToEnglish {
public static void main(String[] args) {
Scanner input =
new Scanner(System.
in);
String src =
""; String target =
"";
while(input.hasNextLine()){
src = input.nextLine();
target = translate(src);
}
}
public static String
translate(String str){
String[] chi = {
"Ling",
"Yi",
"Er",
"San",
"Si",
"Wu",
"Liu",
"Qi",
"Ba",
"Jiu"};
String[] eng = {
"Zero",
"One",
"Two",
"Three",
"Four",
"Five",
"Six",
"Seven",
"Eight",
"Nine"};
Map<String, Integer> chiMap =
new HashMap<String, Integer>();
Map<String, Integer> engMap =
new HashMap<String, Integer>();
int flag =-
1; String[] des =
new String[str.length()];
for(
int i =
0; i<chi.length; i++){
chiMap.put(chi[i], i);
engMap.put(eng[i], i);
}
if(
"".equals(str)||str==
null||str.isEmpty()){
System.
out.println(
"ERROR");
return "";
}
for(
int i =
0 ; i<str.length(); i++){
if(
" ".equals(str.charAt(i))||
"".equals(str.charAt(i))){
System.
out.println(
"ERROR");
return "";
}
}
String[] src = str.split(
" ");
if(chiMap.keySet().contains(src[
0])){
flag =
0;
}
else{
flag =
1;
}
if(flag ==
1){
for(
int i =
0; i<src.length; i++){
if(
"Double".equals(src[i]))
src[i] = src[i+
1];
}
for(
int i =
0; i<src.length; i++){
int idx = engMap.
get(src[i]);
des[i] = chi[idx];
}
}
else{
for(
int i =
0; i<src.length; i++){
int index = chiMap.
get(src[i]);
des[i] = eng[index];
}
}
List<String> target =
new ArrayList<String>();
StringBuffer sb =
new StringBuffer();
for(
int i =
0 ; i< des.length; i++){
if(des[i]!=
null)
sb.append(des[i]);
}
System.
out.println(sb.toString());
System.
out.println(sb);
return sb.toString();
}
}