题目是:写一个函数,返回一个数组中所有元素被第一个元素除的结果

今天研究一个关于函数的问题。编程之美中第一章提出的。
题目是:写一个函数,返回一个数组中所有元素被第一个元素除的结果
首先按照题意。写了这样一个函数
 public static int[] divide()
 {
  int[] a = {1,2,3,4,5,8,9};
  int[] b = {} ;
  for(int i =0;i<a.length;i++){
   b[i]=a[i]/a[0];
  }
  return b;
 }

好来运行~……报错

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
 at test.divide(test.java:17)
 at test.main(test.java:9)
- - 当执行第一环节的时候1/1就已经报错了。这是为什么呢~喔因为b我并没有给值,所以默b的length为0。

人家是0你非要给它值,当然会报错啦。
我换一种方式:
 public static int[] divide()
 {
  int[] a = {10,2,35,0,3,50,6,7,8};
  int b = a[0];
  for(int i =0;i<a.length;i++){
   a[i]=a[i]/b;
  }
  return a;
 }
嗯嗯嗯,这样就没有问题了~ = = 突然想起,如果除数为0会怎样呢。……会报错。
Exception in thread "main" java.lang.ArithmeticException: / by zero
 at test.divide(test.java:19)
 at test.main(test.java:9)
---

经过修改之后:

 public static int[] divide(int[] l)
 {
  int[] a = l;
  int b = a[0];
  for(int i =0;i<a.length;i++){
   try {
    a[i] = a[i] / b;
   } catch (Exception e) {
    a[i]=0;
   }
  }
  return a;
 }
好~ 无敌了。
顺便一说,我想只有白痴才会傻到这样写吧……注意一下细节嘛。。
a[i]=a[i]/a[0];

posted @ 2009-03-26 20:04  j2ee技术  阅读(1114)  评论(0编辑  收藏  举报