一、拼音与英文互相转换的函数
1.1 题目
编写一个拼音与英文互相转换的函数,如果输入的电话号码是英文单词,输出对应的电话号码的中文拼音。如果输入的电话号码是中文拼音,输出对应的电话号码的英文单词。
例如:输入“DoubleOneTwoThreeFour”,则输出”YiYiErSanSi“。
1.2 拼音、英文读法表
Yi Er San Si Wu Liu Qi Ba Jiu One Two Three Four Five Six Seven Eight Nine
注意:每个单词均为大写字母开关,遇到连续两个相同数字,输入可以前面加Double,输出不可以加Double。
1.3 输入描述
由首字母大写组成的字符串,表示一个电话号码的英文单词或者中文拼音,字符输入范围为数字0-9的英文单词或中文拼音。
1.4 输出描述
根据输入字符串, 输出对应的电话号码字符串,如果输入的电话号码是英文单词,输出对应的电话号码的中文拼音。如果输入的电话号码是中文拼音,输出对应的电话号码的英文单词。
1.5 重要知识点
根据map的value值获取key值
Set<String> kset
= map.keySet();
String str
="Yi";
for (
String ks : kset) {
if ((str
.equals(
map.get(ks))) {
System
.out
.print(sk);
}
}
1.6 代码实现
public class Main {
public static void main(String[] args) {
solve();
}
public static void solve() {
Map
map =
new HashMap();
map.put(
"One",
"Yi");
map.put(
"Two",
"Er");
map.put(
"Three",
"San");
map.put(
"Four",
"Si");
map.put(
"Five",
"Wu");
map.put(
"Six",
"Liu");
map.put(
"Seven",
"Qi");
map.put(
"Eight",
"Ba");
map.put(
"Nine",
"Jiu");
map.put(
"Zero",
"Ling");
Scanner scan =
new Scanner(System.in);
String s = scan.nextLine();
ArrayList
list =
new ArrayList();
int l =
0;
int r =
0;
String str = null;
for (
int i =
0; i < s.length(); i++) {
if (s.charAt(i) >=
65 && s.charAt(i) <=
90) {
str = s.substring(l, r +
1);
if (i >
0) {
list.add(str);
}
l = i;
}
else {
r = i;
}
}
str = s.substring(l, r +
1);
list.add(str);
StringBuilder sb =
new StringBuilder();
Set<String> kset =
map.keySet();
for (
int i =
0; i <
list.size(); i++) {
if (
list.get(i).equals(
"Double")) {
if(
map.containsKey(
list.get(i+
1))){
sb.append(
map.get(
list.get(i +
1)));
}
else{
for (String ks : kset) {
if ((
list.get(i+
1)).equals(
map.get(ks))) {
sb.append(ks);
}
}
}
}
else if (
map.containsKey(
list.get(i))) {
sb.append(
map.get(
list.get(i)));
}
else if (
map.containsValue(
list.get(i))) {
for (String ks : kset) {
if ((
list.get(i)).equals(
map.get(ks))) {
sb.append(ks);
}
}
}
}
System.out.print(sb.toString());
}
}