第二题:拼音转数字
输入是一个只包含拼音的字符串,请输出对应的数字序列。转换关系如下:
描述: 拼音 yi er san si wu liu qi ba jiu
阿拉伯数字 1 2 3 4 5 6 7 8 9
输入字符只包含小写字母,所有字符都可以正好匹配
运行时间限制:无限制
内存限制: 无限制
输入: 一行字符串,长度小于1000
输出: 一行字符(数字)串
样例输入: yiersansi
输入是一个只包含拼音的字符串,请输出对应的数字序列。转换关系如下:
描述: 拼音 yi er san si wu liu qi ba jiu
阿拉伯数字 1 2 3 4 5 6 7 8 9
输入字符只包含小写字母,所有字符都可以正好匹配
运行时间限制:无限制
内存限制: 无限制
输入: 一行字符串,长度小于1000
输出: 一行字符(数字)串
样例输入: yiersansi
样例输出: 1234
import java.util.Scanner;
public class SpellingToNumber {
public static void main(String []args){
System.out.println("请输入拼音");
@SuppressWarnings("resource")
Scanner scanner = new Scanner(System.in);
String string = scanner.nextLine();
int length = string.length();
int i=0;
int begin=0;
int end = 2;
final String str1="yi";
final String str2 = "er";
final String str3 = "sa";
final String str4 = "si";
final String str5 = "wu";
final String str6 = "li";
final String str7 = "qi";
final String str8 ="ba";
final String str9 = "ji";
try{
for(i=0;i<length;i++){
String str = null;
str = string.substring(begin,end);
switch (str) {
case str1:{
System.out.print(1);
break;
}
case str2:{
System.out.print(2);
break;
}
case str3:{
System.out.print(3);
break;
}
case str4:{
System.out.print(4);
break;
}
case str5:{
System.out.print(5);
break;
}
case str6:{
System.out.print(6);
break;
}
case str7:{
System.out.print(7);
break;
}
case str8:{
System.out.print(8);
break;
}
case str9:{
System.out.print(9);
break;
}
default:
break;
}
begin= begin+1;
end = end+1;
}
}
catch(Exception exception){
System.out.println("异常");
}
}
}
这个程序一直想不出怎么兼容两位和三位数的算法,如果有好方法,请给点建议,而且程序始终有异常。等我有更好的办法再修改。