之前用java做过0-99的数字和英文之间的翻译,输入数字就会翻译成英文,输入英文会翻译成数字,比如输入56  输出fiftysix   输入fiftysix  输出56,

发现这会有一个异常,当输入不符合格式时,比如英文和数字混输,或者输入标点会报NumberFormatException异常,现在捕捉了这个异常,顺便把

输入越界也加入了异常,比如输入100时 报"输入越界!"。

以下附上代码:

package TranslateClass;
import java.util.Scanner;

abstract class inter
{
 String x[]={"zero","one","two","three","four","five","six","seven","eight","nine"};
 String y[]={"ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen"};
 String z[]={"twenty","thirty","fourty","fifty","sixty","seventy","eighty","ninety"};
 abstract void Translate()throws OutException;
}
class OutException extends Exception
{
 OutException(String msg)
 {
  super(msg);
 }
}

class TransEnglish extends inter//数字翻译成英文
{
 int a;
 
 TransEnglish(int a)
 {
  this.a=a;
 }
 public void Translate()throws OutException
 {
  if(a>=0&&a<=9)
   System.out.println(a+" 翻译成英文为:\n"+x[a]);
  else if(a>9&&a<=19)
   System.out.println(a+" 翻译成英文为:\n"+y[a%10]);
  else if(a>19&&a<=99)
   System.out.println(a+" 翻译成英文为:\n"+z[a/10-2]+"-"+x[a%10]);
  else
   throw new OutException("输入的数字"+a+"不在0-99之间!");
   
 }

}
class TransCout extends inter//英文翻译成数字
{
 String a;
 int i;
 int j=0;
 TransCout(String a)
 {
  this.a=a;
 }
 public void Translate()throws OutException
 {
 
  
  
  for(i=0;i<=7;i++)
  { 
   if(a.contains(z[i]))
    j=(i+2)*10;
   if(a==z[i])
   {
    System.out.println(a+" 翻译成数字为\n"+(i+2)*10);
    return;
   }
  }
  for(i=0;i<=9;i++)
  { 
   if(a==y[i])
   {
    System.out.println(a+" 翻译成数字为\n"+i+10);
    return;
   }
   else if(a.contains(x[i]))
   {
    System.out.println(a+" 翻译成数字为\n"+(j+i));
    return;
   }
  }
  throw new OutException("输入的英文"+a+"不在zero 到 ninety-nie之间!");
 }
}
class Translate
{
  private Translate(){}
  private static Translate s= new Translate();
  public static Translate getTranslate()
  {
   return s;
  }
  
 public void Trans()
 {
  System.out.print("请输入你想翻译的数字或英文(仅限0-99):");
  Scanner scanf=new Scanner(System.in);
  try//解决输入格式异常
  {
   String Str=scanf.next();
   if(Str.charAt(0)>=48&&Str.charAt(0)<=57)
   {
    int cot=Integer.parseInt(Str);
    new TransEnglish(cot).Translate();
   }
   else
    new TransCout(Str).Translate();
  
  }
  catch(NumberFormatException e)
  {
   System.out.println("输入错误!");
   System.out.println(e.toString());      
   
  }
  catch(OutException o)
  {
   System.out.println("输入越界!");
   System.out.println(o.toString());
  }
  finally
  {
   System.out.println("翻译结束。");//断开服务器连接
  }
  
 }
 public static void main(String[] args)
 {
  Translate T = Translate.getTranslate();
  T.Trans();
  //new Translate().Trans();
 }
}

最新文章

  1. 记一次SQLServer的分页优化兼谈谈使用Row_Number()分页存在的问题
  2. JS实现登陆验证的主要代码及思路
  3. source insight项目文件列表固定嵌入右侧
  4. 关于Talend的Patch分支对应Eclipse开发环境的配置总结.
  5. DUBBO安装配置注意事项
  6. c++ ptrdiff_t 类型
  7. 【转】如何解决plsql查询oracle数据库语句where条件带有中文无法匹配结果
  8. MFC基础
  9. UVA - 11090 - Going in Cycle!!(二分+差分约束系统)
  10. FCC(ES6写法) Make a Person
  11. 使用Dockerfile创建镜像
  12. kubelet集群网络配置flannel(覆盖网络)
  13. 基准对象object中的基础类型----集合 (七)
  14. 人人中的 shiro权限管理 简单说明
  15. Windows7系统不显示.gitignore文件名
  16. NET Core微服务之路:SkyWalking+SkyApm-dotnet分布式链路追踪系统的分享
  17. SQL注入方法之:获取列名
  18. 使用p4c将P4 14代码转换为16代码
  19. Cracking The Coding Interview 5.7
  20. happens-before俗解

热门文章

  1. css3动画,监控动画执行完毕
  2. Java实例 Part3:流程控制
  3. md5.digest()与md5.hexdigest()之间的区别及转换
  4. Python学习 :常用模块(三)----- 日志记录
  5. SQL注入总结篇
  6. 【洛谷】 3264 [JLOI2015] 管道连接
  7. Hadoop学习总结之Map-Reduce的过程解析111
  8. # 2016-2017-2 20155319 《Java程序设计》实验四Android程序开发实验报告
  9. 20155322 2016-2017-2 《Java程序设计》实验一 Java开发环境的熟悉(macOS + Eclipse)
  10. python append extend区别