0

変数coeffを とexpo呼ばれる配列リストに渡そうとしていますpoly。が空の場合poly、2 つの変数が格納されます。私の問題はpoly、この場合はelseステートメントになる空でない場合、コンパイラがフリーズして次のエラーをスローすることです:

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

私が気付いていないelseステートメントに何か問題がありますか。

public void insert(int coeff, int expo) {

    Term a = new Term(coeff, expo);// Creates a new Term object with passed #'s

    if (poly.isEmpty()) {
        poly.add(a);

    } else {
        for (int i = 0; i < poly.size(); i++) {
            Term one = poly.get(i);

            if (one.getExp() < a.getExp()) {
                poly.add(i, a);
            }
        }
        poly.add(a);
    }
 }
4

3 に答える 3

3

コードをもっと見ないと確信が持てませんがpoly、繰り返しながら新しい要素を追加するのは難しいようです。注意しないと、簡単に無限ループに陥る可能性があります。

add(i, a)- 番目のインデックスに追加aすると、その前にi挿入し続けると右にシフトし続けるため、同じ要素を何度も調べ続けるため、無限ループが保証されますa

于 2013-04-10T20:17:27.243 に答える