1

これは過去の試験問題からの質問です。コードは質問で与えられました、そして私は値とブレークポイントが何回あるかを取得する必要があります。eclipseでコードを実行しようとしましたが、役に立ちませんでした。(コードが実行された場合、デバッグモードで値を見つけることができました)

factまた、質問には次のように記載されています。値が6のクラスのインスタンスでメソッドが呼び出されnます。コードが質問で指定されたものとまったく同じであるため、何が間違っているのかわかりません。

public class FactLoop {

private int n;// assumed to be greater than or equal to 0

/**
 * Calculate factorial of n
 * 
 * @return n!
 */
public int fact() {
    int i = 0;
    int f = 1;

    /**
     * loop invariant 0<=i<=n and f=i!
     */

    while (i < n) {// loop test (breakpoint on this line)
        i = i++;
        f = f * i;
    }
    return f;
}

// this main method is not a part of the given question
public static void main(String[] args) {
    FactLoop fl = new FactLoop();
    fl.n = 6;
    System.out.println(fl.fact());
}

}

4

1 に答える 1

8

エラーはにありi=i++;ます。i++iをインクリメントし、iの古い値に戻します。と言うi=i++ことで、それをインクリメントしてから、古い値に設定します。

を使用i++;してインクリメントします。

于 2012-08-24T15:51:58.703 に答える