import java.util.Scanner;//导入一个Scanner包
public class Conversion {
//---------------------------------------------定义变量------------------------------------------------------
static String x[]={"zero","one","two","three","four","five","six","seven","eight","nine"};
static String y[]={"ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen"};
static String z[]={"twenty","thirty","forty","fifty","sixty","seventy","eighty","ninety"};
static int b;
//---------------------------------------------主方法---------------------------------------------------------
public static void main(String [] args)
{
Scanner scan=new Scanner(System.in);
char s='y';
while(s=='y')//循环体,可反复输入数字
{
System.out.println("请输入一个一百以内的英语单词或者数字");
String str=scan.nextLine();//获取一行字符串
int flag;
try {
b=Integer.valueOf(str);//把字符串强制转换为数字
flag=1; //如果是数字,flag=1;
}
catch (Exception e){
flag=2; //如果不是数字,抛出异常,且flag=2;
}
int i,j;
switch(flag) //有两种情况
{
case 1://数字转换为英语单词
int a=b;
try{ //异常判断,数字是否超出范围
if(a<0||a>99)
throw new Exception();
}
catch(Exception ex){ //抛出异常
System.out.println("Error:数字超出范围");
System.out.println("继续转换请输入'y'退出请输入任意字符");
String st=scan.nextLine();
s=st.charAt(0);
break;
}
//根据a的值进行判断以及转换
if(a>=0&&a<10){ //转换0~9的数字
System.out.println("转换后的结果是:"+x[a]);
System.out.println("继续转换请输入'y'退出请输入任意字符");
String st=scan.nextLine();
s=st.charAt(0);
break;
}
else if(a>9&&a<20){ //转换10~19的数字
System.out.println("转换后的结果是:"+y[a%10]);
System.out.println("继续转换请输入'y'退出请输入任意字符");
String st=scan.nextLine();
s=st.charAt(0);
break;
}
else if(a%10==0){ //转换20~99中10的倍数的数字
System.out.println("转换后的结果是:"+z[a/10-2]);
System.out.println("继续转换请输入'y'退出请输入任意字符");
String st=scan.nextLine();
s=st.charAt(0);
break;
}
else if(a>19&&a<100){ //转换20~99的非10的倍数数字
System.out.println("转换后的结果是:"+z[a/10-2]+" "+x[a%10]);
System.out.println("继续转换请输入'y'退出请输入任意字符");
String st=scan.nextLine();
s=st.charAt(0);
break;
}
case 2: //英语单词转换为数字
boolean flag1=true;
for(i=0;i<8;i++) //转换20~99的单词
{
for(j=0;j<10;j++)
{
String str1=z[i],str2=x[j];
if(str.equals((str1))){ //判断字符串内容是否相等
System.out.println("转换后的结果是:"+(i*10+20)); //输出20~99中是10倍数的单词数字
flag1=false; System.out.println("继续转换请输入'y'退出请输入任意字符");
String st=scan.nextLine();
s=st.charAt(0);
break;
}
else if(str.equals((str1+" "+str2))){ //判断字符串内容是否相等
System.out.println("转换后的结果是:"+(i*10+j+20)); //输出20~99中非10倍数的单词数字
flag1=false; System.out.println("继续转换请输入'y'退出请输入任意字符");
String st=scan.nextLine();
s=st.charAt(0);
break;
}
}
}
for(i=0;i<10;i++){
if(str.equals(x[i])){ //判断字符串内容是否相等
System.out.println("转换后的结果是:"+i); //输出0~9中的单词数字
flag1=false; System.out.println("继续转换请输入'y'退出请输入任意字符");
String st=scan.nextLine();
s=st.charAt(0);
break;
}
else if(str.equals(y[i])){ //判断字符串内容是否相等
System.out.println("转换后的结果是:"+(10+i)); //输出10~19中的单词数字
flag1=false;System.out.println("继续转换请输入'y'退出请输入任意字符");
String st=scan.nextLine();
s=st.charAt(0);
break;
}
}
if(flag1) //若输入字符串不是英文数字,则输出信息提示
{
System.out.println("Error:非法输入");
System.out.println("继续转换请输入'y'退出请输入任意字符");
String st=scan.nextLine();
s=st.charAt(0);
}
}
}
System.out.println("程序运行结束");
}
}
数字与英文单词的转换
最新推荐文章于 2022-12-18 23:46:35 发布