java - 用数学序列填充数组
问题描述
我想编写一个代码,要求输入三个数字 dig(1), dig(2), dig(3) 并显示一个数字序列 dig(1), dig(2), dig(3), ...,根据此规则挖掘(n):
- a = 挖(2) - 挖(1)
- b = 挖(3) - 挖(2)
- dig(n) = dig(n-1) + a 如果 n 是奇数
- dig(n) = dig(n-1) + b 如果 n 是偶数
例子:
7、8、5、6、3、4、1、2、-1、0
- 它向用户询问三个整数 dig1、dig2、dig3
- 它要求一个数字 N ≥ 3,这将是整个序列计数。
- 它打印一个以开头的序列
然后打印序列,从三个前导整数开始,然后是 N-3 个遵循前三个整数定义的模式的其他项。有关更多信息,请参见下面的示例。
(序列从 n = 1 开始,但当然数组从 0 开始。)
int dig1 = 0;
int dig2 = 0;
int dig3 = 0;
int a;
int b;
int n = 0;
int i;
dig1 = scnr.nextInt();
dig2 = scnr.nextInt();
dig3 = scnr.nextInt();
n = scnr.nextInt();
int[] array = new int[n];
array[0] = dig1;
array[1] = dig2;
array[2] = dig3;
a = dig2 - dig1;
b = dig3 - dig2;
for (i = 3; i < n; i++){
if(i%2 == 0){
array[i] = b + array[i-1];
}
else{
array[i] = a + array[i-1];
}
}
System.out.println(array[i]);
}
}
每当我尝试将其打印出来时,都会出现此错误:
java.lang.ArrayIndexOutOfBoundsException
另一个例子:如果我输入数字:0 1 0 9
在我的输入中,我应该收到序列0 1 0 1 0 1 0 1 0
打印array[n-1]
只给我最终输出。我正在尝试遍历每个数字。
抱歉,如果不清楚,但任何帮助都会很棒,谢谢。
解决方案
您System.out.println(array[i]);
似乎不在 for 循环中。那么i
将等于n
。n
并且在长度为的数组中没有索引的元素n
。元素从0
到n-1
。
推荐阅读
- powershell - 在 Powershell 中搜索用户。允许重复用户的选择
- c++ - 为什么不包含文件
- python - KMeans 初始化自己的质心
- c - glNamedBufferSubData 在两次绘制之间不更新
- javascript - 是的,循环依赖:两个相互要求的字段
- python - 用于迁移现有代码库的线程中的 Python asyncio
- javascript - 如何在 Extjs 中转义 html 标签?
- extjs - ExtJs 6.7 - 在 textarea 中写入文本时,按 TAB 键不会退出 textarea 字段
- python - Tkinter 按钮未出现在窗口中
- css - Bootstrap 4 - 没有任何全局样式的 CSS