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()); } }