作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
该程序找到从 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
。
ArrayList
与 Array
您可以了解有关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/
我正在创建一个使用 svg 作为::after 内容的标签。我希望通过使用绝对定位将 svg 移动到主要内容下方并将其设置为 bottom: 0,但是如果我也将 margin-bottom 设置为 -
我是一名优秀的程序员,十分优秀!