java多项式加法_java实现多项式的加法

今天学习链表的时候看到了多项式的加法,使用c语言链表编写,我现在一直在用java,采用面对对象的思想做了一下

多项式由三个部分组成:常数、系数和未知数(A、B、X等的)。多项式的加法规则是相同系数、相同未知数的常数可以进行相加,组成一个新的项,而不同系数或者不同未知数的,则不能进行相加减,应将其写到后面。我的多项式相加的想法是:先对一个用户输入的混乱的多项式根据系数来进行排序,再对排序过了两个多项式多项式相加的规则进行相加。最后输出结果。 以下是我的代码:

/**

* 用于对多项式的每一项进行分类

* @author steven

*

*/

public class Point {

private int coefficient;//系数

private int exponent;//指数

public Point(int coefficient, int exponent) {

super();

this.coefficient = coefficient;

this.exponent = exponent;

}

public Point(){

}

/**

* 获取系数

* @return

*/

public int getCoefficient() {

return coefficient;

}

public void setCoefficient(int coefficient) {

this.coefficient = coefficient;

}

//获取指数

public int getExponent() {

return exponent;

}

public void setExponent(int exponent) {

this.exponent = exponent;

}

}

上面这个类主要是为了表示系数和项数,如果,表示多项式中的一项

import java.util.ArrayList;

/**

* 多项式

* @author steven

*

*/

public class Multinomial {

private ArrayList terms=new ArrayList();

public ArrayList getTerms() {

return terms;

}

public void setTerms(ArrayList terms) {

this.terms = terms;

}

/**

* 重写toString方法主要是为了输出查看

*/

@Override

public String toString() {

StringBuffer sb=new StringBuffer("");

for (Point point : terms) {

sb.append(point.getCoefficient()+"X"+point.getExponent()+"+");

}

return sb.substring(0, sb.length()-1);

}

}

上面这个类主要是为了表示多项式,里面包含了很多的point

public class Multinomials {

/**

* 多项式的加法

* @param multinomialA

* @param multinomialB

* @return

*/

public static Multinomial Add(Multinomial multinomialA,Multinomial multinomialB){

int i=0;//用于遍历multinomialA

int j=0;//用于遍历multinomialB

Multinomial multinomialC=new Multinomial();

Point pointA=null;

Point pointB=null;

for(;i

pointA=multinomialA.getTerms().get(i);//获取multinomialA对应位置的值

pointB=multinomialB.getTerms().get(j);//获取multinomialB对应位置的值

//比较指数,根据指数执行不同的命令

if(pointA.getExponent()>pointB.getExponent()){

multinomialC.getTerms().add(pointA);

i++;

}else if(pointA.getExponent()

multinomialC.getTerms().add(pointB);

j++;

}else{

pointA.setCoefficient(pointA.getCoefficient()+pointB.getCoefficient());

//pointA.setExponent(pointA.getExponent()+pointB.getExponent());

multinomialC.getTerms().add(pointA);

i++;

j++;

}

}

if(j!=multinomialA.getTerms().size()){//multinomialA遍历完成

for(;j

pointB=multinomialB.getTerms().get(j);

multinomialC.getTerms().add(pointB);

}

}

if(i!=multinomialA.getTerms().size()){//multinomialB遍历完成

for(;i

pointA=multinomialA.getTerms().get(i);

multinomialC.getTerms().add(pointA);

}

}

return multinomialC;

}

/**

* 测试类

* @param args

*/

public static void main(String[] args) {

Point a=new Point(5,8);

Point b=new Point(6,7);

Point c=new Point(-1,8);

Point d=new Point(2,1);

Multinomial multinomialA=new Multinomial();

multinomialA.getTerms().add(a);

multinomialA.getTerms().add(b);

Multinomial multinomialB=new Multinomial();

multinomialB.getTerms().add(c);

multinomialB.getTerms().add(d);

Multinomial multinomialC= Multinomials.Add(multinomialA, multinomialB);

System.out.println(multinomialC.toString());

}

}

这是仿照java的容器写的,最后的结果测试成功.源码下载地址多项式加法

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值