この問題があります。減算、加算、乗算ができる多項式プログラムを作成しています。
しかし、私はこのエラーに出くわしました.なぜこれが起こるのか、私は本当に特定することはできません.
最初に 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;
}
新しいリストではなく、古いリストを印刷し続けているようです。正確な理由はわかりません。