gpt4 book ai didi

java - 数组容器不足以容纳所有需要的值

转载 作者:行者123 更新时间:2023-12-01 19:56:50 25 4
gpt4 key购买 nike

该程序找到从 1 开始的斐波那契数列,然后将 2 位数字分开,使其不会太大,然后对数字进行阶乘并相加。
我的问题是它缺少序列中的最终值,因为数组不够大,但是如果我更改它,它会给我 java.lang.ArrayIndexOutOfBoundsException 错误(异常)

 int sum = 1;
int input;

System.out.print("Enter a number: ");
input = console.nextInt();

int[] fib = new int[input];
int[] out = new int[input];
int[] fib2 = new int[input];

fib[0] = 0;
fib[1] = 1;

fib2[0] = 0;
fib2[1] = 1;
if (input > 0) {

if (input <= 7) { // for numbers 1,1,2,3,5,8
for (int i = 2; i < input; i++) {
fib[i] = fib[i - 1] + fib[i - 2];
out[i] = factorial(fib[i]);

}
} else { // this is for the 2 digit numbers 13,21,34,55,89
for (int i = 2; i < input; i++) {
fib[i] = fib[i - 1] + fib[i - 2];
fib2[i] = fib2[i - 1] + fib2[i - 2];
}
for (int i = 2; i < input; i++) {
fib[i] = separate(fib[i]);
fib2[i] = separate2(fib2[i]);
out[i] = factorial(fib[i]) + factorial(fib2[i]);
}

}

for (int i : out) {
sum = sum + i;
}
System.out.println(sum);
}

输出是 40,490 但应该是 40,730一切正常,除了如果我输入 10,它会缺少最终值 55。计算是这样的 1!+1!+2!+3!+5!+8!+1!+3!+2!+1!+3!+4!+5!+5! = 40,730

最佳答案

当您不知道 array 将存储多少数据时,您应该使用 ArrayList 而不是 Array

ArrayListArray

略有不同

您可以了解有关ArrayList的更多信息here .

用我的代码替换您给定的代码:-

int sum = 1;
int input;

System.out.print("Enter a number: ");
input = console.nextInt();

ArrayList<Integer> fib = new ArrayList<Integer>();
ArrayList<Integer> out = new ArrayList<Integer>();
ArrayList<Integer> fib2 = new ArrayList<Integer>();

fib.add(0);
fib.add(1);

fib2.add(0);
fib2.add(1);
if (input > 0) {

if (input <= 7) { // for numbers 1,1,2,3,5,8
for (int i = 2; i < input; i++) {
fib.add(i, fib.get(i - 1) + fib.get(i - 2));
out.add(i, factorial(fib.get(i)));

}
} else { // this is for the 2 digit numbers 13,21,34,55,89
for (int i = 2; i < input; i++) {
fib.add(i, fib.get(i - 1) + fib.get(i - 2));
fib2.add(i, fib2.get(i - 1) + fib2.get(i - 2));
}
for (int i = 2; i < input; i++) {
fib.add(i, separate(fib.get(i)));
fib2.add(i, separate2(fib2.get(i)));
out.add(i, factorial(fib.get(i)) + factorial(fib2.get(i)));
}

}

for (int i : out) {
sum = sum + i;
}
System.out.println(sum);
}

关于java - 数组容器不足以容纳所有需要的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49345285/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com