2

私のコードには、最終結果がどうなるかを説明するコメントがありますが、この質問に答えながら、その目標を達成する方法には答えないでください。

基本的に、1 に等しい "currentNum" というラベルの付いた int があります。currentNum が 400 万未満になるまで実行される while ループがあります。しかし、何らかの理由でループが実行されていません。while ループの外側はすべて実行されますが、while ループ自体は実行されません。

'HI' がコンソールに 1 回表示されます。「LOOP」はコンソールに表示されません。

コード:

 /*Each new term in the Fibonacci sequence is generated by adding the previous two terms. 
  * By starting with 1 and 2, the first 10 terms will be:
  * 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
  * By considering the terms in the Fibonacci sequence whose values do not exceed four million, 
  * find the sum of the even-valued terms.*/

public class Solution {

public static void main(String args[]) {

    int lastNum1 = 0;
    int lastNum2 = 0;
    int currentNumEven = 0;
    int currentNum = 1;
    int sumEven = 0;
    boolean last = true;

    System.out.println("HI");

    while(currentNum < 4000000);

    System.out.println("LOOP");

    currentNum = currentNum + (lastNum1 + lastNum2);

    if(last) {
        lastNum1 = currentNum;
        last = !last;
    } else {
        lastNum2 = currentNum;
        last = !last;
    }

    if(currentNum % 2 == 0) {
        currentNumEven = currentNum;
        sumEven += currentNum;
        System.out.println(currentNumEven);
        System.out.println(currentNum);
    }

    if(currentNum < 4000000) {
    currentNum++;

    } else {
        System.out.println("Sum of all even Fibonacci values: " + sumEven + "\n Last even number of sequence below 4,000,000" + currentNumEven);
      }

   }

}
4

4 に答える 4

7

エラーは次の行にあります。

 while(currentNum < 4000000);

その最後;は間違っています!while条件の後に、ブロックを閉じるために、開始を配置し{、次にループの最後に別の開始を配置する必要があります。}このような:

while (currentNum < 4000000) {
    // body
}
于 2013-06-21T02:07:48.550 に答える
1

構文エラー。正しい構文は次のとおりです。

do{
 //put your codes here
}
while(currentNum < 4000000);

また

while(currentNum < 4000000){
//put your codes here
}
于 2013-06-21T02:10:04.813 に答える
0

a を使用する;と、ステートメントの終わりが宣言されます。これを試して:

public class Solution {

public static void main(String args[]) {

    int lastNum1 = 0;
    int lastNum2 = 0;
    int currentNumEven = 0;
    int currentNum = 1;
    int sumEven = 0;
    boolean last = true;

    System.out.println("HI");

    while(currentNum < 4000000){

    System.out.println("LOOP");

    currentNum = currentNum + (lastNum1 + lastNum2);

    if(last) {
        lastNum1 = currentNum;
        last = !last;
    } else {
        lastNum2 = currentNum;
        last = !last;
    }

    if(currentNum % 2 == 0) {
        currentNumEven = currentNum;
        sumEven += currentNum;
        System.out.println(currentNumEven);
        System.out.println(currentNum);
    }

    if(currentNum < 4000000) {
    currentNum++;

    } else {
        System.out.println("Sum of all even Fibonacci values: " + sumEven + "\n Last even number of sequence below 4,000,000" + currentNumEven);
      }
     }
   }

}
于 2013-06-21T02:10:14.487 に答える
0

私はこの行があなたの問題があると信じています

while(currentNum < 4000000);

「currentNum」が増加しないため、これにより無限ループが発生します。

while(currentNum < 4000000);

==

while(currentNum < 4000000){
}
于 2013-06-21T02:10:57.730 に答える