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

处理了一个以前写的java小程序的异常的更多相关文章

  1. 输出多行字符的一个简单JAVA小程序

    public class JAVA { public static void main(String[] args) { System.out.println("-------------- ...

  2. 浏览器兼容java小程序配置说明

    最近在使用的一个web应用系统是内嵌了java小程序,遇到了各种浏览器兼容性问题,现梳理如下: 1.通过以下链接检测当前电脑是否已经安装有java https://java.com/zh_CN/dow ...

  3. python(三)一个文件读写操作的小程序

    我们要实现一个文件读写操作的小程序 首先我们有一个文件 我们要以"============"为界限,每一个角色分割成一个独立的txt文件,按照分割线走的话是分成 xiaoNa_1. ...

  4. 框架一般用作Java应用程序的窗口,而Applet是Java小程序的窗口

    框架一般用作Java应用程序的窗口,而Applet是Java小程序的窗口. 与Frame不同,Applet是在网页中显示的,也可以通过添加Panel进行组件布局. package TomAwt; im ...

  5. 【小程序分享篇 一 】开发了个JAVA小程序, 用于清除内存卡或者U盘里的垃圾文件非常有用

    有一种场景, 手机内存卡空间被用光了,但又不知道哪个文件占用了太大,一个个文件夹去找又太麻烦,所以我开发了个小程序把手机所有文件(包括路径下所有层次子文件夹下的文件)进行一个排序,这样你就可以找出哪个 ...

  6. 一个小时快速搭建微信小程序教程

    「小程序」这个划时代的产品发布快一周了,互联网技术人都在摩拳擦掌,跃跃欲试.可是小程序目前还在内测,首批只发放了 200 个内测资格(泪流满面).本以为没有 AppID 这个月就与小程序无缘了,庆幸的 ...

  7. 2015.11.27初识java一集简单的java小程序

    JAVA配置环境变量方法: 1.打开我的电脑--属性--高级--环境变量 2.新建系统变量JAVA_HOME 和CLASSPATH 变量名:JAVA_HOME变量值:D:\Java\jdk1.7.0_ ...

  8. java的数据类型,几个java小程序

    1:求圆的面积 还好看了c++,不然直接看这课件还真是看不懂……加油吧 要从键盘读入数据可以用Scanner类的nextlnt()或者nextDouble()方法,首先创建Scanner类的一个实例, ...

  9. 一个小时快速搭建微信小程序

    「小程序」这个划时代的产品发布快一周了,互联网技术人都在摩拳擦掌,跃跃欲试.可是小程序目前还在内测,首批只发放了 200 个内测资格(泪流满面).本以为没有 AppID 这个月就与小程序无缘了,庆幸的 ...

随机推荐

  1. Linux 字符设备驱动—— ioremap() 函数解析

    一. ioremap() 函数基础概念 几乎每一种外设都是通过读写设备上的相关寄存器来进行的,通常包括控制寄存器.状态寄存器和数据寄存器三大类,外设的寄存器通常被连续地编址.根据CPU体系结构的不同, ...

  2. 复数 一级ADT实现

    COMPLEX.h /* typedef struct { float RE; //实部 float IM; //虚部 }Complex; */ typedef struct complex * Co ...

  3. 'express'不是内部或外部命令, 也不是可运行的程序, 或批处理文件

    1. npm install -g express-generator 安装新的express框架2. express -h 错误提示: 'express'不是内部或外部命令, 也不是可运行的程序, ...

  4. nodejs搭建web服务器初级

    nodejs搭建简单的web服务器 1.1简介 Node.js是基于Chrome JavaScript运行时建立的一个平台,实际上它是对Google Chrome V8引擎进行了封装,它主要用于创建快 ...

  5. 20155336 2016-2017-2《Java程序设计》课程总结

    20155336虎光元<Java程序设计>课程总结 一.每周作业 第一周学习总结:http://www.cnblogs.com/hxl681207/p/6457919.html 第二周学习 ...

  6. windows phone 8.1 让项目开启蓝牙genericAttributeProfile

    1.打开项目里面的  Package.appxmanifest 文件 找到<Capabilities>节点,添加代码如下,其中 serviceId:6006 可以自己修改值 <m2: ...

  7. 分享daocloud联合创始人陈齐彦关于docker的一段阐述

    罗比,本名陈齐彦,他在加入DaoCloud之前是EMC中国研究院的总架构师,云平台及应用实验室的创始人.谈及创业的初心,他激动了起来: 容器这东西和当年Hadoop一样,是互联网技术对企业IT技术的逆 ...

  8. PostgreSQL参数学习:random_page_cost

    磨砺技术珠矶,践行数据之道,追求卓越价值回到上一级页面:PostgreSQL基础知识与基本操作索引页    回到顶级页面:PostgreSQL索引页[作者 高健@博客园  luckyjackgao@g ...

  9. 「PKUWC2018」Minimax

    题面 题解 强势安利一波巨佬的$blog$ 线段树合并吼题啊 合并的时候要记一下$A$点权值小于$l$的概率和$A$点权值大于$r$的概率,对$B$点同样做 时空复杂度$\text O(nlogw)$ ...

  10. CF 1065 E. Side Transmutations

    E. Side Transmutations http://codeforces.com/contest/1065/problem/E 题意: 长度为n的字符串,字符集为A,问多少不同的字符串.两个字 ...