-1
2つの多項式をLinkedListデータ構造体を使って2つの多項式を追加して受け入れるコードを作成しました。私の問題は、ユーザーが多項式を入力した後で、追加が行われるはずですが、返される多項式の値は常に0x^0です。JavaでLinkedListを使用した2つの多項式の追加
ここにプログラムのメインコードがあります(注:これはスイッチのケースに入っていますので、私は全体の方法を記述しませんでした)。ただ、追加する多項式
public void addTerm(Term newTerm) throws Exception {
int listIndex = 00;
boolean foundFlag = false;
Term currentTerm = null;
for(listIndex=0; listIndex<polyTerm.size(); listIndex++) {
currentTerm = polyTerm.get(listIndex);
if(currentTerm.getExpC()<=newTerm.getExpC()) {
foundFlag = true;
break;
}
}
if(!foundFlag) {
polyTerm.add(newTerm);
} else {
if(currentTerm.getExpC()<newTerm.getExpC()) {
polyTerm.add(listIndex, newTerm);
} else {
currentTerm.setNumC(currentTerm.getNumC()+newTerm.getNumC());
if(currentTerm.getNumC()==0) {
polyTerm.remove(listIndex);
}
}
}
}//addTerm
に用語を追加するための多項式
public Polynomial addPolys(Polynomial otherPoly) throws Exception {
LinkedList<Term> resultTerms = new LinkedList<Term>();
Polynomial resultPoly = new Polynomial();
for(int x=0; x<this.getTerms().size(); x++) {
Term currentTerm = this.getTerms().get(x);
resultTerms.add(new Term(currentTerm.getNumC(), currentTerm.getExpC(), currentTerm.getLitC()));
}
resultPoly.setTerms(resultTerms);
for(int y=0; y<otherPoly.getTerms().size(); y++) {
resultPoly.addTerm(otherPoly.getTerms().get(y));
}
if(resultPoly.getTerms().size()==0) {
resultPoly.addTerm(new Term(0,0,'x'));
}
return resultPoly;
}//addPolys
メソッドを追加するための
System.out.println("Literal Coefficient of the two Polynomials: \'x\'");
System.out.println("Degree of the first Polynomial?");
System.out.print("Input: ");
eV = readInteger();
nC = new int[eV];
for(int x=0; x<=nC.length-1; x++) {
System.out.println("Numerical Coefficient of the term with Degree "+eV+"?");
System.out.print("Input: ");
nC[x] = readInteger();
firstPoly.add(new Term(nC[x], eV, 'x'));
eV--;
}
resultPolyOne.setTerms(firstPoly);
System.out.println();
System.out.println("The first Polynomial entered: ");
stringRepresentation(firstPoly);
System.out.println();
System.out.println();
System.out.println("Degree of the second Polynomial?");
System.out.print("Input: ");
eV = readInteger();
nC = new int[eV];
for(int x=0; x<=nC.length-1; x++) {
System.out.println("Numerical Coefficient of the term with Degree "+eV+"?");
System.out.print("Input: ");
nC[x] = readInteger();
secondPoly.add(new Term(nC[x], eV, 'x'));
eV--;
}
resultPolyTwo.setTerms(firstPoly);
System.out.println();
System.out.println("The second Polynomial entered: ");
stringRepresentation(secondPoly);
System.out.println();
System.out.println();
System.out.println("Result of the Addition: ");
System.out.println((resultPolyOne.addPolys(resultPolyTwo)).toString());
firstPoly.clear();
secondPoly.clear();
方法、私の用語のコンストラクタは、このようなものです。
Term(int numberCoefficent, char literalCoefficent, int exponentialCoefficient) {
//Codes here
}
期待どおりの行はありませんか? – MordechayS
あなたはかなりのコードを私たちに投げ捨てました。そして、ある程度は、コードが厄介で、怠惰にインデントされているので、ひどくフォーマットされています。あなたは私たちがあなたを助けるために時間を費やすことを望みます。だから、より良い品質を提供するためにあなたの時間を費やすことをお勧めします! – GhostCat
多項式クラスはどこですか? – matt