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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郝勇 中级黑马   /  2013-4-2 13:29  /  1525 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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;
}
}

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

7 个回复

倒序浏览
这个代码怎么往上贴才会有 行数什么的   不会啊!!!
回复 使用道具 举报
郝勇 发表于 2013-4-2 13:30
这个代码怎么往上贴才会有 行数什么的   不会啊!!!

有没有看到 <> 这个符号??这就是贴代码用的
回复 使用道具 举报
  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. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
宋耀冬 发表于 2013-4-2 14:19

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

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

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马