我不明白访问数组中数据的方法是什么,并将其用作条件是在内容超过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);
答案 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();