今天研究一个关于函数的问题。编程之美中第一章提出的。题目是:写一个函数,返回一个数组中所有元素被第一个元素除的结果首先按照题意。写了这样一个函数 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];
转载于:https://www.cnblogs.com/J2EEPLUS/archive/2009/03/26/2487824.html