Java中String转int型的方法以及错误处理
应要求,本周制作了一个判断一个年份是否是闰年的程序。逻辑很简单,这里就不贴代码了。可是,在这次程序编写中发现了一个问题。
在输入年份时,如果输入1)字母2)空3)超过Int上限时,就会抛exception。
问题出在String转Int型时。
首先,在java中String转换为Int主要有两种方法
1.Integer.parseInt(s)
2.Integer.valueOf(s).intValue();
这两种方法略有不同,之后再跟大家分析。
首先我使用第一种方法,当测试数据为正常的年份时,是没有问题的,可当你测试非正常数据时就会抛出exception:
主要为NumberFormatException:
1)当你输入为字母时,也就是内容不是数字时,如abcd
2)当你输入为空时
3)当你输入超出int上限时
然后我使用了第二种方法,得到的结果与第一种相同。
那怎么解决这种问题呢,使用户能正常输入内容
首先我想到的是使用try—catch
是程序能够捕捉到exception,并作相应处理
以上代码就是当输入数据无法转换成int型时,弹出请输入正确年份的提示
TIPS:
1.Integer.parseInt(s)与Integer.valueOf(s).intValue()到底有什么不同呢,经过试验感觉并没有太大差异,但是Integer.valueOf(s)与Integer.parseInt(s)就有很大不同了,主要在于返回值不同
Integer.parseInt(s)返回值为Int型
Integer.valueOf(s)返回值为Integer,区别在于后者能够使用Integer的一些方法。
2.在做软件测试时不能仅仅用正常数据进行测试,因为对于软件从业人员而言,有很多观念根深蒂固,而一般使用者并没有这些观念,如果你不考虑这些使用者,那你的程序就会出现很多问题,就像这个闰年程序一样
3.try—catch在使用中真的用处很大,一个程序执行中有很多情况下会出exception,而这个方法能够帮助我们作相应处理。