数字与英文单词的转换

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("程序运行结束");
     }   
}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值