处理了一个以前写的java小程序的异常
之前用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();
}
}
最新文章
- 记一次SQLServer的分页优化兼谈谈使用Row_Number()分页存在的问题
- JS实现登陆验证的主要代码及思路
- source insight项目文件列表固定嵌入右侧
- 关于Talend的Patch分支对应Eclipse开发环境的配置总结.
- DUBBO安装配置注意事项
- c++ ptrdiff_t 类型
- 【转】如何解决plsql查询oracle数据库语句where条件带有中文无法匹配结果
- MFC基础
- UVA - 11090 - Going in Cycle!!(二分+差分约束系统)
- FCC(ES6写法) Make a Person
- 使用Dockerfile创建镜像
- kubelet集群网络配置flannel(覆盖网络)
- 基准对象object中的基础类型----集合 (七)
- 人人中的 shiro权限管理 简单说明
- Windows7系统不显示.gitignore文件名
- NET Core微服务之路:SkyWalking+SkyApm-dotnet分布式链路追踪系统的分享
- SQL注入方法之:获取列名
- 使用p4c将P4 14代码转换为16代码
- Cracking The Coding Interview 5.7
- happens-before俗解
热门文章
- css3动画,监控动画执行完毕
- Java实例 Part3:流程控制
- md5.digest()与md5.hexdigest()之间的区别及转换
- Python学习 :常用模块(三)----- 日志记录
- SQL注入总结篇
- 【洛谷】 3264 [JLOI2015] 管道连接
- Hadoop学习总结之Map-Reduce的过程解析111
- # 2016-2017-2 20155319 《Java程序设计》实验四Android程序开发实验报告
- 20155322 2016-2017-2 《Java程序设计》实验一 Java开发环境的熟悉(macOS + Eclipse)
- python append extend区别