Java访问数组中的值

时间:2016-02-10 04:10:25

标签: java arrays fibonacci

我不明白访问数组中数据的方法是什么,并将其用作条件是在内容超过4,000,000后停止循环的条件,并且如果值为偶数则还存储和添加值!

    int[] a=new int[40];
    int add=0;
    a[0]=1;
    a[1]=2;
    int i=2;
    do{
        a[i]=a[i-1]+a[i-2];

        System.out.println(a[i]);

        if(a[i]%2==0)
        {
          add=add+a[i];
         }
        i++;
    }
    while(i<32);

    System.out.println(add);

3 个答案:

答案 0 :(得分:2)

只需检查变量add,看看它的值是否大于4,000,000,然后突破循环。做这样的事情:

if(add > 4000000) {
   break;
}

所以你的最终代码将如下所示:

int[] a=new int[40];
    int add=0;
        a[0]=1;
        a[1]=2;
    int i=2;
    do{
        a[i]=a[i-1]+a[i-2];
        System.out.println(a[i]);
        if(a[i]%2==0){add=add+a[i];}
        if(add > 4000000) {
            break; //this will get you out of your loop
        }
        i++;
    }while(i<32);
    System.out.println(add);

答案 1 :(得分:0)

我只想把它扔出去:使用do-while循环可能会使它变得比以往更难。你的代码的第一部分是完全合理的,但是我的&gt; 32不太清楚。

我这样看。使用

初始化数组及其前两个值后
int[] a = new int[40];
a[0] = 1;
a[1] = 2;

你知道你已经占了一个偶数值(2)。所以刚刚初始化添加到2。

现在循环。你想从i = 2开始,只要add小于或大于4,000,000就迭代,对吧?所以做一个for循环来表达它:

for (int i = 2; add <= 4000000; i++) {
    a[i] = a[i - 2] + a[i -1];
    if (a[i] % 2 == 0) {
        add += a[i];
    }
}

不需要i&lt; 32,不需要任何中断声明!

答案 2 :(得分:0)

感兴趣的是,这是Java 8流的一个很好的应用程序。

class Fib implements IntSupplier {
    private int current = 1;
    private int previous = 0;

    public int getAsInt() {
        int next = current + previous;
        previous = current;
        current = next;
        return current;
}

IntStream.generate(new Fib())
    .limit(4000000)
    .filter(n - > n % 2 == 0)
    .sum();