如何设置包含相关项的数组

How to set up an array with related items

我正在尝试制作一个允许我操作多变量多项式的程序。我希望能够处理具有多个变量且每个变量都有自己的指数的表达式。例如,多项式对象的一个​​示例将包含来自 5x^2*y^3.

的信息

我想将这个多项式的信息存储在实例变量中:一个 int 表示系数,一个 String[] 表示变量,一个 int[] 表示每个变量的指数。

我将如何链接这两个数组以将每个变量与其自身的指数相关联?我不想让变量和它的指数在不同数组的相同索引中。我想知道如何有一个更有保证的方式来正确处理数据。

使用带有新 class 的单个数组,如下所示

public class Element {
    private String variable;
    private int coefficient;
    private int exponent;
    ...
}

然后你可以像下面这样创建一个数组:

public Element[] elements;

请注意,您从未谈论过运算符...可能您必须向该结构添加更多内容才能了解元素之间的运算符。

根据项目的实施情况,在两者之间建立牢固联系的需求可能无关紧要。我将提供一个示例,因为有一种简单的方法可以引用两个数组并获取匹配的数据。

int[] coefficients = ...
String[] exponents = ...

对于引用,假设您想要第二个多项式...您需要做的就是引用两个数组中的相同位置以获得匹配值。只要确保串联更新阵列,这样它们就不会不同步。我可能会推荐一种特定的更新方法。

//Do some action
coefficients[1].action
exponents[1].action

为什么不创建多项式 class:

Public class Polynomial {
int coefficient;
String variables [];
int exponents [];
public Polynomial (int coeff, String [] var, int [] expo) {...}

然后只需要一个多项式对象数组..

多项式多项式[] = 新多项式[200];

那么您的所有数据都将保存在必要的对象中,并且可以轻松访问或维护。如果您需要动态存储解决方案,请改用 ArrayList。

首先创建一个 POJO class 以在字段 coefficient, variable, 中存储多项式变量指数.

然后从另一个class;

呼叫他们

这是POJO class,我称之为Element;

public class Element {

    private double coefficient;
    private int exponent;
    private String variable;

    public Element(double coefficient, String variable, int exponent ) {
        this.coefficient = coefficient;
        this.variable = variable;
        this.exponent = exponent;
    }

    public double getCoefficient() {
        return coefficient;
    }

    public void setCoefficient(double coefficient) {
        this.coefficient = coefficient;
    }

    public String getVariable() {
        return variable;
    }

    public void setVariable(String variable) {
        this.variable = variable;
    }

    public int getExponent() {
        return exponent;
    }

    public void setExponent(int exponent) {
        this.exponent = exponent;
    }

}

测试代码如下;

public class TestPolynomials {

    public static void main(String[] args) {
        Element[] polynomialList = { new Element(5,"x",2), new Element(1,"y",3), new Element(6,"1",0) };

        printPolynomials(polynomialList);

    }

    public static void printPolynomials( Element[] pList ) {
        for( int i = 0; i < pList.length; i++ ) {
            System.out.printf("%2.1f*%s*%d, ", pList[i].getCoefficient(), pList[i].getVariable(), pList[i].getExponent() );
        }
    }

}

输出结果如下;

5.0*x*2
1.0*y*3
6.0*1*0