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);
}
}
*/
public class Main01 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while (sc.hasNext()) {
String str=sc.nextLine();
printRes(str);
}
}
private static void printRes(String str) {
Map<String, String>map=new HashMap<String, String>();
map.put("Zero", "Ling"); //key value 类似于查询字典
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");
//str是输入的全部字符串 DoubleOneTwoThreeFour 大写字母的Acii码的数值是:65-90
int index=0,len=0;
List<String>list=new ArrayList<>();
for (int i = 0; i < str.length(); i++) {
if (str.charAt(i)>=65 && str.charAt(i)<=90) {//大写字母的ACII码
String sub=str.substring(index, index+len+1);//截取一个单词
if (i>0) {
list.add(sub);
// System.out.println(sub);//最后一个字符串处理不到
}
len=0;
index=i;
}else {
len++;
}
}
//处理最后一个子串
String sub2=str.substring(index,str.length());
list.add(sub2);
//存储结果
StringBuffer sb=new StringBuffer();
//遍历list进行计算输出
Set<String> kset = map.keySet();// 根据value 取可key值
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)));//返回指定键所映射的值 根据key取value
}else {//if(map.containsValue(list.get(i)))//输入的是中文拼音 根据value 取可key值
for (String ks : kset) {
if (((list.get(i+1)).equals(map.get(ks)))){//sk 是key
sb.append(ks);
}
}
}
}
else{//不含有double 则都是单独出现
if (map.containsKey(list.get(i))) {
sb.append(map.get(list.get(i)));//根据key取value
}
else if (map.containsValue(list.get(i))) {
for (String ks : kset) {
if (((list.get(i)).equals(map.get(ks)))){//sk 是key
sb.append(ks);
}
}
}
}
}
System.out.println(sb.toString());
}
}