0

この問題があります。減算、加算、乗算ができる多項式プログラムを作成しています。

しかし、私はこのエラーに出くわしました.なぜこれが起こるのか、私は本当に特定することはできません.

最初に Polynomial.java を用意し、2 つの入力の配列リストを作成します。次に、指数に基づいてそれらを並べ替えます。指数が一致する場合は、このリストをループし、係数の追加に基づいて新しいペアが作成されます。元の指数を使用します。

public Polynoom subtract(Polynoom that) {
    Polynoom subtract = new Polynoom(); 
    subtract.termen.addAll(that.termen);
    for (int i = 0; i < subtract.termen.size(); i++) {
        subtract.termen.get(i).coef = subtract.termen.get(i).coef * -1; 
    }
    subtract.termen.addAll(this.termen);
    Collections.sort(subtract.termen);
    subtract.removeDoubles(); 
    return subtract; 
}

これにより、double と integer のペアのリストが作成されます。例えば:

-1.0 2
-1.0 1
 1.0 1
 2.0 0 

次に、同じ指数を持つペアを探すメソッドがあります。そうであれば、係数を追加し、最初のペアの指数を取ります。

    private void removeDoubles() {

    for (int i = 0; i < this.termen.size() - 1; i++) {
        if (this.termen.get(i).exponent == this.termen.get(i + 1).exponent) {
            this.termen.set(i, new Pair((this.termen.get(i).coef + this.termen.get(i + 1).coef), (this.termen.get(i).exponent)));
            this.termen.remove(i + 1); 
            i --; 
        }       
    }
}

ただし、どういうわけか、新しいペアで渡す 2 番目の引数が機能しません。

たとえば、新しいペアを次のように変更した場合:

this.termen.set(i, new Pair(13, 2));
result difference: 1.0x^2 + 13.0x^2 + 2.0 (this is correct)

たとえば、新しいペアを次のように変更した場合:

this.termen.set(i, new Pair(13, this.termen.get(i).exponent);
result difference: -1.0x^2 + x^1 + 2.0 (this is not correct)

新しいペアを手動で設定すると機能するのはなぜですか? this.termen.get.exponent を使用するのに機能しないのはなぜですか? 私は基本的に同じことをするからです: 新しい Pair オブジェクトを作成するときに整数を入れます。

誰でもヒントをくれますか?:)

ありがとう!

編集:

私の termen クラスは多項式クラスの一部であり、termen は型ペアのカスタム配列リストです。

class Polynoom implements PolynoomInterface {


ArrayList<Paar> termen = new ArrayList<Paar>(); 

そして私のペアクラス:

class Paar implements Comparable <Paar> {

double coef;
int exponent;

Paar(double a, int b) {
    coef = a; 
    exponent = b; 
}

編集 2: クラス Polynomial の私の toString メソッド:

public String toString() {

   String temp = "";
    for (int i = 0; i < this.termen.size(); i++) {
        if (i != this.termen.size() - 1)
        temp += this.termen.get(i) + " + ";
      else
        temp += this.termen.get(i);
    }
    return temp; 
}

新しいリストではなく、古いリストを印刷し続けているようです。正確な理由はわかりません。

4

0 に答える 0