黑马程序员技术交流社区

标题: 多异常处理 [打印本页]

作者: 郝勇    时间: 2013-4-2 13:29
标题: 多异常处理
public class forum{
  public static void main(String[] args)throws ArithmeticException,ArrayIndexOutOfBoundsException
  {
Demo d = new Demo();
try{
int x = d.div(4,1);                                 //    下面的(arr[4])中写什么数,  这一行的 d.div(4,1); 中也写什么数。都写4,就会角标越界    都改成3,也会角标越界        哪位大神给解释下
System.out.println("x="+x);
}

catch (ArithmeticException e)
{
  System.out.println(e.toString());
  System.out.println("被零除了!!");
}
catch (ArrayIndexOutOfBoundsException e)
{
  System.out.println(e.toString());
  System.out.println("角标越界了");
}
catch(Exception e)
{
  System.out.println(e.toString());
}
System.out.println("over");
  }
}
class Demo
{
int div(int a,int b)throws Exception
{
  int[] arr = new int[a];
  System.out.println(arr[4]);    //为什么这里是4就会角标越界,  这个地方到底什么意思,看视频  自己想   怎么也想不通  
  return a/b;
}
}

作者: 郝勇    时间: 2013-4-2 13:30
这个代码怎么往上贴才会有 行数什么的   不会啊!!!
作者: 打工人    时间: 2013-4-2 13:52
郝勇 发表于 2013-4-2 13:30
这个代码怎么往上贴才会有 行数什么的   不会啊!!!

有没有看到 <> 这个符号??这就是贴代码用的

作者: 宋耀冬    时间: 2013-4-2 14:19
  1. public class Forum
  2. {
  3.     public static void main(String[] args) throws ArithmeticException,ArrayIndexOutOfBoundsException
  4.     {
  5.             Demo d = new Demo();
  6.             try
  7.                 {
  8.                         int x = d.div(5,1); //下面的(arr[4])中写什么数,  这一行的 d.div(4,1); 中也写什么数。都写4,就会角标越界    都改成3,也会角标越界        哪位大神给解释下
  9.                         System.out.println("x="+x);
  10.                 }

  11.                 catch (ArithmeticException e)
  12.                 {
  13.                     System.out.println(e.toString());
  14.                     System.out.println("被零除了!!");
  15.                 }
  16.                 catch (ArrayIndexOutOfBoundsException e)
  17.                 {
  18.                     System.out.println(e.toString());
  19.                     System.out.println("角标越界了");
  20.                 }
  21.                 catch(Exception e)
  22.                 {
  23.                     System.out.println(e.toString());
  24.                 }

  25.                 System.out.println("over");
  26.         }
  27. }

  28. class Demo
  29. {
  30.         int div(int a, int b)throws Exception
  31.         {
  32.             int[] arr = new int[a];
  33.             System.out.println(arr[4]);//为什么这里是4就会角标越界,  这个地方到底什么意思,看视频  自己想   怎么也想不通  
  34.                 /*
  35.                 这一行代码是这样的   arr[4] 打印的是数组中的第五个元素,
  36.                 数组是从0角标开始计数的,要特别注意了

  37.                 吐槽:你的代码写的真乱拉  给你调理了一下
  38.                 */
  39.             return a/b;
  40.         }
  41. }
复制代码

作者: 郝勇    时间: 2013-4-2 14:40
宋耀冬 发表于 2013-4-2 14:19

确实   自己练习  就没有想那么多   我知道那个4代表着是角标是4的数组中第五个元素,视频我看了好几遍,但是我纠结的问题是int x = d.div(5,1); 中的5,如果在arr[5]也写成5,也是角标越界,  前一句话不就是说传进去两个数么,  为什么穿进去的a,和后面数组角标的那个 关系这么大  不理解     他们俩个位置换成任意两个相同的数都会角标越界  就这里不懂!
作者: 郝勇    时间: 2013-4-2 14:43
冯海霞 发表于 2013-4-2 13:52
有没有看到  这个符号??这就是贴代码用的

看到了  谢谢!这几天不知道怎么回事  点回复没反应  关了再进  就已经回复上了   之前不是这样啊  打网页速度还是很快的  为什么  一道回复就不行了呢  还有图片网上贴也是  没反应  我都无语了 !
作者: 陈丽莉    时间: 2013-4-2 22:15
若还有问题,继续追问; 没有的话,将帖子分类改成【已解决】哦~
作者: 邵彩华    时间: 2013-4-3 15:31
其实很简单,因为 函数div(int a,int b)中的语句 打印的是下表为4的数组元素,也就是第五个元素,故 调用div方法的时候传递的数组长度必须是大于等于5,你用3或4实验肯定是异常,你用5或更大的数试试就对了
这道题不是你不会,是细心的问题。你没有看懂程序不然就把System.out.println(arr[4]);里的4改成3了。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2