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