完美数字是其因素之和的总和,不包括其自身。第一个完美数是6,因为6 = 1 + 2 + 3。第二个完美数是28,等于1 + 2 + 4 + 7 + 14.第三个是496 = 1 + 2 + 4 + 8 + 16 + 31 + 62 + 124 + 248.在每种情况下,数字是除自身以外的所有因素的总和。JAVA ArrayIndexoutofBoundException问题
编写一个名为henry的方法,它接受两个整数参数i和j并返回第i个和第j个完美数字的总和。举例来说,henry(1,3)应该返回502,因为6是第一个完美数字,496是第三个完美数字并且6 + 496 = 502。
我已经完成了这项工作::但是这显示了ArrayIndexOutOfBoundException在这一行temp [index] = j;请帮我解决这个问题OutOfBound,谢谢..
public static int henry (int a, int b){
List<Integer> arr = new ArrayList<Integer>();
int henryNumber = 0;
for(int i=4;;i++){
List<Integer> temp = new ArrayList<Integer>();
int sum = 0;
for(int j = 1; j<i; j++){
if(i%j == 0) { temp.add(j); }
}
for (Integer item : temp) { sum+=item; }
if(sum == i) arr.add(i);
if(arr.size() == b) {
henryNumber = arr.get(a-1) + arr.get(b-1);
break;
}
}
return henryNumber;
}
请张贴确切的例外。它应该告诉你'j'的价值。另外,请将参数添加到产生异常的调用中。 – Turing85
当然,索引超出范围。数组长度为0!没有索引可能会在界限!你为什么不使用这个列表? – user2357112
你的数组总是空的,据我所知 - 所以没有数组访问表达式,*不会抛出异常... –