【发布时间】:2015-05-27 20:49:59
【问题描述】:
一个完美的数字是它的因子的总和,不包括它自己。第一个完美数是 6,因为 6 = 1 + 2 + 3。第二个完美数是 28,等于 1 + 2 + 4 + 7 + 14。第三个是 496 = 1 + 2 + 4 + 8 + 16 + 31 + 62 + 124 + 248。在每种情况下,数字都是除自身之外的所有因素的总和。
编写一个名为 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的值。另外,请提供调用的参数,这会产生异常。 -
当然索引越界了。数组长度为0!没有索引可能在范围内!你为什么不使用这个列表?
-
据我所知,您的数组始终为空 - 所以没有数组访问表达式不会抛出异常...
-
我是 java 新手,不知道如何准确地使用我使用数组的列表,
-
不要编辑更新代码的问题。相反,请保持原样并在您的解决方案中发布答案。