A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 徐军涛 中级黑马   /  2012-11-22 22:24  /  1644 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/*获取键盘录入的纯数字,且不能超出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异常?
   }
}

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

2 个回复

正序浏览
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异常?
就可以实现异常的抛出了。
回复 使用道具 举报
本帖最后由 坚持远方 于 2012-11-22 22:50 编辑

Integer.parseInt(str)>Integer.MAX_VALUE//你这一句话的意思就是将str转换成int类型,既然他能转换成int类型,所以就不会超出他的最大值,当我输入了一个特别长的数时,出现的异常是“java.lang.NumberFormatException:”,所以你抛出的那句是不可能执行的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马