-1

So I am doing this project and its done but i have one problem which is the output.This project involves adding and subtracting polynomials using arrays with exponents,linkedlist, and storting

why I am getting nulls for my second and fourth test. Here is the code and out put.The code here are not all in one class, there seperate classes:

        public interface PolynomialInterface {

            PolynomialInterface add(PolynomialInterface other);

            // Effect: Adds value to owner of addPolynomial method.

            // Postcondition: Return value = this + value.

            PolynomialInterface subtract(PolynomialInterface other);

            // Effect: Subtracts value from owner of addPolynomial method.

            // Postcondition: Return value = this - value. void readPolynomial();

            // Postcondition: polynomial read.

            String toString();

             //Postcondition: polynomial converted to string. 
             }




            import java.util.ArrayList;

             public class ArrayWithExponentAsIndexPolynomial implements PolynomialInterface

            {

             int polynomial[];

             int highExp;

             ArrayWithExponentAsIndexPolynomial()

             {

                  polynomial=new int[200];

             }

             ArrayWithExponentAsIndexPolynomial(String pol)

             {

                  polynomial=new int[200];

                  highExp=0;

                  int co=0;//Coefficient

                  int exp=0;//exponent

        //Convert the polynomial string into linked list of polynomial terms

                  for(int i=0;i<pol.length();i++)

                  {

                      co=0;

                      exp=0;

                      //Find coefficient

                      while(pol.charAt(i)!='x' && pol.charAt(i)!='X' )

                      {                 

                           if(pol.charAt(i)=='-')

                           {

                                i++;

                                while(i<pol.length())

                                {

                                     if(pol.charAt(i)!='x' && pol.charAt(i)!='X' )

                                     {

                                     String sub=pol.substring(i,i+1);

                                     co=co*10+Integer.parseInt(sub);

                                     }

                                     else

                                          break;

                                     i++;

                                }

                                co=co*-1;                   

                           }

                           else if (pol.charAt(i)=='+')

                           {

                                i++;

                           }

                           else

                           {

                                String sub=pol.substring(i,i+1);

                                co=co*10+Integer.parseInt(sub);

                                i++;

                           }



                           if(i>=pol.length())

                                break;



                      }

                      i++;//skip x

                      if(i==pol.length())

                      {

                           if(pol.charAt(i-1)=='x' || pol.charAt(i-1)=='X')

                                          exp=1;

                      }

                      i++;//skip ^

                      if(i<pol.length())

                      while(pol.charAt(i)!='-' && pol.charAt(i)!='+' )

                      {

                           String sub=pol.substring(i,i+1);

                           exp=exp*10+Integer.parseInt(sub);

                           i++;

                           if(i>=pol.length())

                                break;

                      }

                      if(highExp<exp)

                           highExp=exp;

                      addATerm(exp,co);

                      i--;

                  }

             }

             // stores the coefficient at index(exp)

             void addATerm(int exp,int co)

             {

                  // store the coefficient at index(exp)

                  polynomial[exp]=co;

             }

             int getHigh()

             {

                  return highExp;

             }

             @Override

        //Adds two polynomials and returns the resultant polynomial

             public PolynomialInterface add(PolynomialInterface other)

             {

                  int high;

                  ArrayWithExponentAsIndexPolynomial temp=new ArrayWithExponentAsIndexPolynomial();

                  ArrayWithExponentAsIndexPolynomial otherPoly=(ArrayWithExponentAsIndexPolynomial)other;

                  if(this.getHigh()<otherPoly.getHigh())

                  {

                      high=otherPoly.getHigh();

                      temp.highExp=otherPoly.getHigh();

                  }

                  else

                  {

                      high=this.getHigh();

                      temp.highExp=this.getHigh();

                  }

                  for(int i=0;i<=high;i++)

                  {

                      if(this.polynomial[i]!=0 && otherPoly.polynomial[i]!=0)

                      {

                           temp.polynomial[i]=this.polynomial[i]+otherPoly.polynomial[i];

                      }

                      else if (this.polynomial[i]==0 && otherPoly.polynomial[i]!=0)

                      {

                           temp.polynomial[i]=otherPoly.polynomial[i];

                      }

                      else if (this.polynomial[i]!=0 && otherPoly.polynomial[i]==0)

                      {

                           temp.polynomial[i]=this.polynomial[i];

                      }

                  }

                  return temp;

             }

             @Override

        //Substracts one polynomial from another and returns the resultant polynomial

             public PolynomialInterface subtract(PolynomialInterface other)

             {

                  int high;

                  ArrayWithExponentAsIndexPolynomial temp=new ArrayWithExponentAsIndexPolynomial();

                  ArrayWithExponentAsIndexPolynomial otherPoly=(ArrayWithExponentAsIndexPolynomial)other;

                  if(this.getHigh()<otherPoly.getHigh())

                  {

                      high=otherPoly.getHigh();

                      temp.highExp=otherPoly.getHigh();

                  }

                  else

                  {

                      high=this.getHigh();

                      temp.highExp=this.getHigh();

                  }

                  for(int i=0;i<=high;i++)

                  {

                      if(this.polynomial[i]!=0 && otherPoly.polynomial[i]!=0)

                      {

                           temp.polynomial[i]=this.polynomial[i]-otherPoly.polynomial[i];

                      }

                      else if (this.polynomial[i]==0 && otherPoly.polynomial[i]!=0)

                      {

                           temp.polynomial[i]=0-otherPoly.polynomial[i];

                      }

                      else if (this.polynomial[i]!=0 && otherPoly.polynomial[i]==0)

                      {

                           temp.polynomial[i]=this.polynomial[i];

                      }

                  }

                  return temp;

             }



             public String toString()

             {

                  String poly="";

                  //Convert the linked list into polynomial string

                  for(int i=this.getHigh();i>=0;i--)

                  {

                      if(polynomial[i]!=0)

                      {

                           if(i==1)

                           {

                                if(polynomial[i]<0)

                                     poly=poly+"-"+polynomial[i]*-1+"x";

                                else

                                     poly=poly+polynomial[i]+"x";

                           }

                           else if(i!=0)

                           {

                                if(polynomial[i]<0)

                                     poly=poly+"-"+polynomial[i]*-1+"x^"+i;

                                else

                                {

                                     if(i!=this.getHigh())

                                          poly=poly+"+"+polynomial[i]+"x^"+i;

                                     else

                                          poly=poly+polynomial[i]+"x^"+i;

                                }

                           }

                           else

                           {

                                if(polynomial[i]<0)

                                     poly=poly+"-"+polynomial[i]*-1;

                                else

                                     poly=poly+"+"+polynomial[i];

                           }



                      }

                  }

                  return poly;

             }


        }




    public class ArraySortedPolynomial implements PolynomialInterface

    {

        ArraySortedPolynomial()

         {



         }

         ArraySortedPolynomial(String pol)

         {

         }

    @Override

         public PolynomialInterface add(PolynomialInterface other) {

              // TODO Auto-generated method stub

              return null;

         }

         @Override

         public PolynomialInterface subtract(PolynomialInterface other) {

              // TODO Auto-generated method stub

              return null;

         }



    }


public class LinkedListInArrayPolynomial implements PolynomialInterface

{

     LinkedListInArrayPolynomial(String pol)

     {



     }

     @Override

     public PolynomialInterface add(PolynomialInterface other) {

          // TODO Auto-generated method stub

          return null;

     }

     @Override

     public PolynomialInterface subtract(PolynomialInterface other) {

          // TODO Auto-generated method stub

          return null;

     }



}



  public class PlynomialDemo
{
        public static void main(String[] args)
        {
                // example strings constructor must handle
                //      String s = "44";
                //      String s = "44x";
                //      String s = "4x^4+3x^3-3";
                //      String s = "4x^3-3x^11";
                //      String s = "44x^6-3x^10+4x^4";
                //      String s = "25x^5-3x^13+4x^12-78";
                //      String s ="34x^15-44x^14-3x^12+4x^31-78";
                //      String s1 = "44";
                //      String s2 = "44x-78";
                //      String s1 = "4x^4+3x^3-3";
                //      String s2 = "4x^6-3x^12";
                String s1 = "4x^14-3x^12+4x^4+78";
                String s2 = "-4x^4-3x^12+4x^17-78";
                //      String s1 = "4x^4+3x^11+4x^10";
                //      String s2 = "5x^14-3x^12+4x^19-78";
                //  String s1 = "4x^5+4x^4-3x^12-4x^41-78";
                //  String s2 = "-4x^4+3x^12+4x^41+78";
                // Four implementations of the interface
                PolynomialInterface exAsIndex1 = new ArrayWithExponentAsIndexPolynomial(s1);
                PolynomialInterface exAsIndex2 = new ArrayWithExponentAsIndexPolynomial(s2);
                PolynomialInterface exAsIndex3; 
                exAsIndex3 = exAsIndex1.add(exAsIndex2);
                System.out.println("First test is with array index as exponent. " );
                //      System.out.println("exAsIndex1 string is         " + s1);
                System.out.println("exAsIndex1 =                 " + exAsIndex1);
                //      System.out.println("exAsIndex2 string is         " + s2);
                System.out.println("exAsIndex2 =                 " + exAsIndex2);
                System.out.println("exAsIndex3 = exAsIndex1.add(exAsIndex2)      " + exAsIndex3);
                exAsIndex3 = exAsIndex1.subtract(exAsIndex2);
                //      System.out.println("exAsIndex1 string is         " + s1);
        //      System.out.println("exAsIndex1 =                 " + exAsIndex1);
                //      System.out.println("exAsIndex2 string is         " + s2);
                //System.out.println("exAsIndex2 =                 " + exAsIndex2);
                System.out.println("exAsIndex3 = exAsIndex1.subtract(exAsIndex2) " + exAsIndex3);
                System.out.println();

                PolynomialInterface sortA1 = new ArraySortedPolynomial(s1);
                PolynomialInterface sortA2 = new ArraySortedPolynomial(s2);
                PolynomialInterface sortA3; 
                sortA3 = sortA1.add(sortA2);
                System.out.println("Second test is sorted array of terms.");
                //      System.out.println("sortA1 string is           " + s1);
                System.out.println("sortA1 =                   " + sortA1);
                //      System.out.println("sortA2 string is           " + s2);
                System.out.println("sortA2 =                   " + sortA2);
                System.out.println("sortA3 = sortA1.add(sortA2)      " + sortA3);
                sortA3 = sortA1.subtract(sortA2);
                //      System.out.println("sortA1 string is           " + s1);
                //System.out.println("sortA1 =                   " + sortA1);
                //      System.out.println("sortA2 string is           " + s2);
                //System.out.println("sortA2 =                   " + sortA2);
                System.out.println("sortA3 = sortA1.subtract(sortA2) " + sortA3);
                System.out.println();

                PolynomialInterface link1 = new LinkListPolynomial(s1);
                PolynomialInterface link2 = new LinkListPolynomial(s2);
                PolynomialInterface link3;
                System.out.println("Third test is linked list of terms.");
                //      System.out.println("link1 string is       " + s1);
                System.out.println("link1 =               " + link1);
                //      System.out.println("link2 string is       " + s2);
                System.out.println("link2 =               " + link2);
                link3 = link1.add(link2);
                System.out.println("sum of link1 and link2 = " + link3);
                //      System.out.println("link1 string is       " + s1);
        //      System.out.println("link1 =               " + link1);
                //      System.out.println("link2 string is       " + s2);
                //System.out.println("link2 =               " + link2);
                link3 = link1.subtract(link2);
                System.out.println("link1 minus link2 =      " + link3);

                System.out.println();
                PolynomialInterface linkInArray1 = new LinkedListInArrayPolynomial(s1);
                PolynomialInterface linkInArray2 = new LinkedListInArrayPolynomial(s2);
                PolynomialInterface linkInArray3 = new LinkedListInArrayPolynomial(s2);
                System.out.println("Forth test is linked list of terms in an array.");
                //System.out.println("linkInArray1 string is       " + s1);
                System.out.println("linkInArray1 =               " + linkInArray1);
                //      System.out.println("linkInArray2 string is       " + s2);
                System.out.println("linkInArray2 =               " + linkInArray2);
                linkInArray3 = linkInArray1.add(linkInArray2);
                System.out.println("sum of linkInArray1 and linkInArray2 = " + linkInArray3);
                linkInArray3 = linkInArray1.subtract(linkInArray2);
                System.out.println("linkInArray1 minus linkInArray2 =      " + linkInArray3);
        }
}

OUTPUT:

First test is with array index as exponent. 
exAsIndex1 =                 4x^14-3x^12+4x^4+78
exAsIndex2 =                 4x^17-3x^12-4x^4-78
exAsIndex3 = exAsIndex1.add(exAsIndex2)      4x^17+4x^14-6x^12
exAsIndex3 = exAsIndex1.subtract(exAsIndex2) -4x^17+4x^14+8x^4+156

Second test is sorted array of terms.
sortA1 =                   ArraySortedPolynomial@139a55
sortA2 =                   ArraySortedPolynomial@1db9742
sortA3 = sortA1.add(sortA2)      null
sortA3 = sortA1.subtract(sortA2) null

Third test is linked list of terms.
link1 =               +4x^14-3x^12+4x^4+78
link2 =               +4x^17-3x^12-4x^4-78
sum of link1 and link2 = +4x^17+4x^14-6x^12
link1 minus link2 =      -4x^17+4x^14+8x^4+156

Forth test is linked list of terms in an array.
linkInArray1 =               LinkedListInArrayPolynomial@106d69c
linkInArray2 =               LinkedListInArrayPolynomial@52e922
sum of linkInArray1 and linkInArray2 = null
linkInArray1 minus linkInArray2 =      null
Mo_Hakim
  • 1
  • 2
  • 1
    the only block of code your `add` method executes --> `return null;`. what was your intent for the `add` method? to add the provided param to some list? – Ousmane D. Apr 28 '17 at 03:31
  • You want to read about [mcve]. Your example is neither minimal nor complete. – GhostCat Apr 28 '17 at 03:34
  • And beyond that: you have way too many empty lines in your code. Vertical spacing is an important aspect of writing readable code, but you are overdoing. – GhostCat Apr 28 '17 at 03:36
  • Please post non-infinite code, as this makes it easy for us to answer –  Apr 28 '17 at 05:13

2 Answers2

0
 ArraySortedPolynomial 

&

LinkedListInArrayPolynomial

are not defined.. SO ofcourse they are going to come up null in value, and the system will print out the address in which they are stored.

*LinkListPolynomial was not added in your post but it seems to be working for you *

   public class ArraySortedPolynomial implements PolynomialInterface

{

    ArraySortedPolynomial()

     {



     }

     ArraySortedPolynomial(String pol)

     {

     }

@Override

     public PolynomialInterface add(PolynomialInterface other) {

          // TODO Auto-generated method stub

          return null;

     }

     @Override

     public PolynomialInterface subtract(PolynomialInterface other) {

          // TODO Auto-generated method stub

          return null;

     }



}


public class LinkedListInArrayPolynomial implements PolynomialInterface

{

 LinkedListInArrayPolynomial(String pol)

 {



 }

 @Override

 public PolynomialInterface add(PolynomialInterface other) {

      // TODO Auto-generated method stub

      return null;

 }

 @Override

 public PolynomialInterface subtract(PolynomialInterface other) {

      // TODO Auto-generated method stub

      return null;

 }



}

Im not going to do your homework for you. Define these two methods that implement your Polynomial interface and then they will work accordingly

Benji Weiss
  • 406
  • 2
  • 6
  • 19
0

It returns a null pointer because that is the value that is returned and stored in the 2 variables: sortA3 and linkInArray3, in the methods add and subtract. Your code:

public PolynomialInterface add(PolynomialInterface other) {

      // TODO Auto-generated method stub

      return null;

 }

 @Override

 public PolynomialInterface subtract(PolynomialInterface other) {

      // TODO Auto-generated method stub

      return null;

 }

So what else do you expect the output to be?