2016-10-26 5 views
-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 
} 
+0

期待どおりの行はありませんか? – MordechayS

+1

あなたはかなりのコードを私たちに投げ捨てました。そして、ある程度は、コードが厄介で、怠惰にインデントされているので、ひどくフォーマットされています。あなたは私たちがあなたを助けるために時間を費やすことを望みます。だから、より良い品質を提供するためにあなたの時間を費やすことをお勧めします! – GhostCat

+0

多項式クラスはどこですか? – matt

答えて

0

@GhostCatのおかげで、私は質問を再検討してしまいました。その結果、私の質問に対する答えが見つかりました。

@モレカイ私が多項式を表示する行の中に問題がありました。 @matt私は私の答えを掲示するので、私はもう助けが必要ではないと思います。私はと置き換え

System.out.println((resultPolyOne.addPolys(resultPolyTwo)).toString()); 

問題はこれだった私は私の多項式クラスで行われた方法である

resultPolyThree.toStringRep(); 

、私は以来、オブジェクトのtoStringメソッドをオーバーライドしませんでした私はこれを磨きたい。

関連する問題