java 一元多项式的输出_我想用java来实现一个 一元多项式的输入,我定义了一个类polymail 有两个成员变量 chef 和exp,...

展开全部

请把问题再描述清楚些,给定什么条件,想要什么结果?62616964757a686964616fe78988e69d8331333264626565

最好能举个例子。恐怕很多人对一元多项式对忘了差不多了。

程序已完成。两个类,一个类Node。封装多项式用的。一个计算用的。链表直接用java里面的ArraryList了,不用自己再写结构了。若不知道怎么运行java类,请补充问题。

效果如下:

请输第1个项多式以回车结束: 格式如:2^0+8^3+7^5+6^6+7^9

2^0+8^3+7^5+6^6+7^9

请输第2个项多式以回车结束:

3^6+4^3+5+2^8+6^2

=======以下为输出结果======

多项式1:2+8x^3+7x^5+6x^6+7x^9

多项式2:5+6x^2+4x^3+3x^6+2x^8

多项式和:7+6x^2+12x^3+7x^5+9x^6+2x^8+7x^9

程序如下:

文件 Node.java

public class Node implements Comparable{

private int xishu;//系数

private int zhishu; //指数

public int getXishu() {

return xishu;

}

public void setXishu(int xishu) {

this.xishu = xishu;

}

public int getZhishu() {

return zhishu;

}

public void setZhishu(int zhishu) {

this.zhishu = zhishu;

}

public Node(){

}

public Node(int a,int b){

xishu=a;

zhishu=b;

}

/**

* 通过指数来比较整个对象大小

*/

public int compareTo(Node node) {

return this.zhishu-node.zhishu;

}

/**

* 当 系统与指数都相等时,说明整个对象都相等.

*/

@Override

public boolean equals(Object o) {

Node node = (Node) o;

if(this.zhishu==node.zhishu&&this.xishu==node.xishu){

return true;

}else{

return false;

}

}

}

文件: Test.java

import java.util.ArrayList;

import java.util.Collections;

import java.util.List;

import java.util.Scanner;

/**

* @author Youngao

* @Time 2011-03-18

* @Relue 多项式加法规则:对于两个多项式中指数相同的子项,其系数相加,若系数的和非零,

* 则构成“和多项式”中的一项;对于指数不同的项,直接构成“和多项式”中的一项。

*/

public class Test {

public static void main(String[] args) {

Scanner stdin = new Scanner(System.in);

System.out.println("请输第1个项多式以回车结束: 格式如:2^0+8^3+7^5+6^6+7^9");

String str1 = stdin.nextLine();

List list1 = splitStr(str1);

System.out.println("请输第2个项多式以回车结束: ");

String str2 = stdin.nextLine();

List list2 = splitStr(str2);

System.out.println("=======以下为输出结果======");

printPolyn("多项式1:",list1);

printPolyn("多项式2:",list2);

//相加

List newlist = AddPolyn(list1,list2);

printPolyn("多项式和:",newlist);

}

/**

* 两一元多项式相加

*/

private static List AddPolyn(List list1, List list2) {

List deletenode1 = new ArrayList();

List deletenode2 = new ArrayList();

List newlist = new ArrayList();

for(int i=0;i

Node list1node = list1.get(i);

for(int j=0;j

Node list2node = list2.get(j);

//凭规则 重新组装 '和结果'的链表

if(list1node.getZhishu()==list2node.getZhishu()){

Node newnode = new Node();

newnode.setXishu(list1node.getXishu()+list2node.getXishu());

newnode.setZhishu(list1node.getZhishu());

deletenode1.add(list1node);

deletenode2.add(list2node);

newlist.add(newnode);

break;

}

}

}

//去除已被求和的各项

list1.removeAll(deletenode1);

list2.removeAll(deletenode2);

//拼接剩余所有项

for(int i=0;i

Node list2node = list2.get(i);

if(!newlist.contains(list2node)){

newlist.add(list2node);

}

}

for(int i=0;i

Node list1node = list1.get(i);

if(!newlist.contains(list1node)){

newlist.add(list1node);

}

}

// 按指数从低到高排序

Collections.sort(newlist);

return newlist;

}

/**

* 统一的打印方法

*/

private static void printPolyn(String str, List list) {

String result = str;

for(int i=0;i

Node node = list.get(i);

if(i==list.size()-1){

if(node.getZhishu()==0){

result += node.getXishu()+"";

}else{

result += node.getXishu()+"x^"+node.getZhishu();

}

}else{

if(node.getZhishu()==0){

result += node.getXishu()+"+";

}else{

result += node.getXishu()+"x^"+node.getZhishu()+"+";

}

}

}

System.out.println(result);

}

/**

* 分割字符串,并封装键表

*/

private static List splitStr(String str1) {

String[] strs = str1.split("\\+");

List list = new ArrayList();

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

String[] subnode = strs[i].split("\\^");

int xishu = Integer.valueOf(subnode[0].trim());

int zhishu = 0;

if(subnode.length>1)

zhishu = Integer.valueOf(subnode[1].trim());

Node node = new Node(xishu,zhishu);

list.add(node);

}

// 按指数从低到高排序

Collections.sort(list);

return list;

}

}

本回答由提问者推荐

2Q==

已赞过

已踩过<

你对这个回答的评价是?

评论

收起

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值