https://zhidao.baidu.com/question/510139137.html
完整版
package com.lm.test;
/**
* 多项式类
* @author abc
*
*/
public class Multinomial
{
public int[] factorArr; //成员变量系数数组
public int[] getFactorArr()
{
return factorArr;
}
public void setFactorArr(int[] factorArr)
{
this.factorArr = factorArr;
}
/**
* 构造函数
* @param factors
*/
public Multinomial(int... factors)
{
factorArr = new int[factors.length];
for (int i = 0; i < factors.length; i++)
{
factorArr[i] = factors[i];
}
}
/**
* 得到幂次系数的方法
* @param power 幂次
* @return
*/
public int getFactor(int power)
{
if (power < factorArr.length)
{
return factorArr[power];
}
else
{
return 0;
}
}
/**
* 多项式的加法
* @param another
* @return
*/
public Multinomial add(Multinomial another)
{
int maxLength = Math.max(another.getFactorArr().length, this.getFactorArr().length);
int[] resultArr = new int[maxLength];
for (int i = 0; i < maxLength; i++)
{
resultArr[i] = (i < this.getFactorArr().length ? this.getFactorArr()[i] : 0)
+ (i < another.getFactorArr().length ? another.getFactorArr()[i] : 0);
}
return new Multinomial(resultArr);
}
/**
* 多项式的乘法
* @param another
* @return
*/
public Multinomial multiplication(Multinomial another)
{
int totalLength = another.getFactorArr().length + this.getFactorArr().length - 1;
int[] resultArr = new int[totalLength];
for (int i = 0; i < totalLength; i++)
{
for (int j = 0; j <=i; j++)
{
resultArr[i] += (j < this.getFactorArr().length ? this.getFactorArr()[j] : 0)
* (i-j < another.getFactorArr().length ? another.getFactorArr()[i-j] : 0);
}
}
Multinomial restult = new Multinomial(resultArr);
return restult;
}
/**
* 多项式的值的方法
* @param x
* @return
*/
public double getResult(double x)
{
double result = 0;
for (int i = 0; i < factorArr.length; i++)
{
result += factorArr[i]*Math.pow(x, i);
}
return result;
}
/**
* 覆盖toString方法
*/
@Override
public String toString()
{
String str = "";
for (int i = 0; i < factorArr.length; i++)
{
if (factorArr[i] != 0)
{
if (i == 0)
{
str += factorArr[i];
}
if (i >= 1)
{
str += (factorArr[i] > 0 ? "+" : "") + factorArr[i] + "x" + (i > 1 ? "^"+i : "");
}
}
}
return str.startsWith("+") ? str.substring(1) : str;
}
/**
* main函数
* @param args
*/
public static void main(String[] args)
{
double x = 2;
Multinomial multinomial1 = new Multinomial(2, 4, 0, -5);
Multinomial multinomial2 = new Multinomial(0, -4, -5, 2, 0, 2);
System.out.println("第一个多项式:"+multinomial1);
System.out.println("第一个多项式的值:"+multinomial1.getResult(x));
System.out.println("第二个多项式:"+multinomial2);
System.out.println("第二个多项式的值:"+multinomial2.getResult(x));
System.out.println("两个多项式相加后:"+multinomial1.add(multinomial2));
System.out.println("两个多项式相加后的值:"+multinomial1.add(multinomial2).getResult(x));
System.out.println("两个多项式相乘后:"+multinomial1.multiplication(multinomial2));
System.out.println("两个多项式相乘后的值:"+multinomial1.multiplication(multinomial2).getResult(x));
}
}
没毛病,楼主采纳吧。