黑马程序员技术交流社区

标题: 异常问题 [打印本页]

作者: 徐军涛    时间: 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