黑马程序员技术交流社区
标题:
异常问题
[打印本页]
作者:
徐军涛
时间:
2012-11-22 22:24
标题:
异常问题
/*获取键盘录入的纯数字,且不能超出int的范围*/
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
String str = null;
while((str=br.readLine())!=null){
if("over".equals(str))
break;
sb.append(str);
}
str = sb.toString()
System.out.println(str);
Pattern p = Pattern.compile("[0-9]*+");
Matcher m = p.matcher(sb);
if(!(m.matches())){
throw new RuntimeException("请输入纯数字!");
} else if(Integer.parseInt(str)>Integer.MAX_VALUE){
// throw new RuntimeException("请输入一个比"+Integer.MAX_VALUE+"小的数字");//此处怎么抛不出Runtime异常?
}
}
作者:
坚持远方
时间:
2012-11-22 22:48
本帖最后由 坚持远方 于 2012-11-22 22:50 编辑
Integer.parseInt(str)>Integer.MAX_VALUE//你这一句话的意思就是将str转换成int类型,既然他能转换成int类型,所以就不会超出他的最大值,当我输入了一个特别长的数时,出现的异常是“java.lang.NumberFormatException:”,所以你抛出的那句是不可能执行的
作者:
jerry2627
时间:
2012-11-22 22:55
else if(Integer.parseInt(str)>Integer.MAX_VALUE){
// throw new RuntimeException("请输入一个比"+Integer.MAX_VALUE+"小的数字");//此处怎么抛不出Runtime异常?
理由就是楼上说的了
换成
else if(Long.parseLong(str)>Integer.MAX_VALUE){
throw new RuntimeException("请输入一个比"+Integer.MAX_VALUE+"小的数字");//此处怎么抛不出Runtime异常?
就可以实现异常的抛出了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2