首页 > 解决方案 > 用数学序列填充数组

问题描述

我想编写一个代码,要求输入三个数字 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

然后打印序列,从三个前导整数开始,然后是 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]只给我最终输出。我正在尝试遍历每个数字。

抱歉,如果不清楚,但任何帮助都会很棒,谢谢。

标签: javaarrays

解决方案


System.out.println(array[i]);似乎不在 for 循环中。那么i将等于nn并且在长度为的数组中没有索引的元素n。元素从0n-1


推荐阅读