题目是:写一个函数,返回一个数组中所有元素被第一个元素除的结果
今天研究一个关于函数的问题。编程之美中第一章提出的。
题目是:写一个函数,返回一个数组中所有元素被第一个元素除的结果
首先按照题意。写了这样一个函数
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];