Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-加减多项式_Java_Sorting_Add_Polynomials_Subtraction - Fatal编程技术网

Java-加减多项式

Java-加减多项式,java,sorting,add,polynomials,subtraction,Java,Sorting,Add,Polynomials,Subtraction,所以我正在做这个项目,它已经完成了,但我有一个问题,那就是输出。这个项目涉及到使用带指数的数组、链接列表和存储对多项式进行加法和减法 为什么我在第二次和第四次测试中得到零分。这是密码和密码 这里的代码不是都在一个类中,而是有不同的类: public interface PolynomialInterface { PolynomialInterface add(PolynomialInterface other); // Effe

所以我正在做这个项目,它已经完成了,但我有一个问题,那就是输出。这个项目涉及到使用带指数的数组、链接列表和存储对多项式进行加法和减法

为什么我在第二次和第四次测试中得到零分。这是密码和密码 这里的代码不是都在一个类中,而是有不同的类:

        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);
        }
}
&

没有定义。。当然,它们的值将为空,系统将打印出它们存储的地址

*LinkListPolyman没有添加到您的帖子中,但它似乎对您有用*

   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;

 }



}

我不会为你做家庭作业。定义实现多项式接口的这两个方法,然后它们将相应地工作

它返回一个空指针,因为这是在方法add和subtract中返回并存储在两个变量中的值:sortA3和linkinaray3。您的代码:

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;

 }

那么您还希望输出是什么呢?

您的
add
方法执行的唯一代码块-->
返回null。您使用
add
方法的目的是什么?要将提供的参数添加到某个列表中,请阅读。你的例子既不简单也不完整。除此之外:你的代码中有太多的空行。垂直间距是编写可读代码的一个重要方面,但您做得太过分了。请发布非无限代码,因为这使我们很容易回答
LinkedListInArrayPolynomial
   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 PolynomialInterface add(PolynomialInterface other) {

      // TODO Auto-generated method stub

      return null;

 }

 @Override

 public PolynomialInterface subtract(PolynomialInterface other) {

      // TODO Auto-generated method stub

      return null;

 }