文档章节

java实现多项式的加法

忘川-hsm
 忘川-hsm
发布于 2017/05/28 23:52
字数 661
阅读 111
收藏 0

今天学习链表的时候看到了多项式的加法,使用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<Point> terms=new ArrayList<Point>();

	public ArrayList<Point> getTerms() {
		return terms;
	}

	public void setTerms(ArrayList<Point> 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<multinomialA.getTerms().size()&&j<multinomialB.getTerms().size();){
			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()<pointB.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<multinomialB.getTerms().size();j++){
				pointB=multinomialB.getTerms().get(j);
				multinomialC.getTerms().add(pointB);
			}
		}
		if(i!=multinomialA.getTerms().size()){//multinomialB遍历完成
			for(;i<multinomialA.getTerms().size();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的容器写的,最后的结果测试成功.源码下载地址多项式加法

© 著作权归作者所有

忘川-hsm
粉丝 8
博文 84
码字总数 50675
作品 0
深圳
程序员
私信 提问
Java jdk实现的CRC32算法的多项式是什么啊?

CRC32算法有一个很重要的东西貌似是 多项式,Linux solaris Java等他们的多项式都不一样 有谁知道Java jdk实现的CRC32算法的多项式是什么吗?

xiaoskery
2013/02/22
883
1
云栖社区专家系列课——Java必修课第一讲

本节课为 Java必修课第一讲。在本节课中,最课程创始人、微软MVP陆敏枝为了大家介绍了当前Java行业的IT人才供需情况、Java基本语法、JDK的下载与安装、Java环境变量的配置以及第一个Java程序...

笑傲江湖lcx
2018/07/03
0
0
JAS 2.5.4821 发布,Java 代数系统

Java Algebra System 2.5.4821 发布,此版本更新内容如下: brings the solvable polynomial common divisor package edu.jas.fd in a partially usable condition The definition of great......

oschina
2014/04/24
1K
2
【译】在java中,字符串的加法是如何实现的?

原文:How is + implemented in Java? 译文:在java中,字符串的加法是如何实现的? 当我查看String类的concat函数的源码时,发现字符串连接是这么实现的: public String concat(String st...

coffeescript
2013/01/04
536
1
JAX-WS Customization

介绍 在之前的文章中,有一篇关于HandlerChain的介绍。当时HandlerChain使用的是Java Annotation方式注册到WebService上的。我们也可以使用JAX-WS提供的针对WSDL的customization,来配置Han...

xpbug
2014/04/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

用Javascript评估用户输入密码的强度

密码已经是我们生活工作中必不可少的工具,但一个不安全的密码有又有可能会给我们造成不必要的损失。作为网站设计者,如果我们在网页中能对用户输入的密码进行安全评估,并显示出相应的提示信息...

花漾年华
30分钟前
0
0
Python 打开目录与指定文件

Python打开外部文件有很多方法, os.popen打开外部程序,但发现只能打开文件所在目录的文件 os.system可打开外部文件os.system(command) command 要执行的命令,相当于在Windows...

shzwork
32分钟前
2
0
Leetcode # 118:Pascal's Triangle 杨辉三角

118:Pascal's Triangle 杨辉三角 Given a non-negative integer numRows, generate the first numRows of Pascal's triangle. 给定一个非负整数 *numRows,*生成杨辉三角的前 numRows 行。 ......

iCodeBugs
42分钟前
1
0
IntelliJ IDEA导入Gradle项目

1.File > Open 找到项目后选择build.gradle文件,点击ok image 2.点击Open as Project image 3.选择本地Gradle以及JDK image 4.点OK完成...

青峰Jun19er
47分钟前
2
0
Python实现斐波那契数列

斐波那契数列大家都很熟悉吧,咱们在高中学数学的时候,老师会讲这个定律以及算法,其实数据结构和数学息息相关,数学思维好的往往逻辑思维就比较好,今天小猿圈带大家学习一下python的斐波那...

小猿圈加加
48分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部