java求助 按图片要求写一份小程序 一定要按要求

图片说明

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

}

没毛病,楼主采纳吧。