压缩 ArrayList NullPointer

Condensing ArrayList NullPointer

所以我正在制作一个接受多项式函数并用它做不同事情的程序。

现在,我正在尝试创建一种方法来检查输入的多项式,它存储为 ArrayList,并对其进行压缩,以便将具有相同指数的所有内容加在一起。

每当我 运行 程序时,我都会收到 NullPointer Exception,但我不确定为什么会收到此消息。我知道错误的含义,但我查看了我的代码,看不出为什么多项式被视为 null.

这是我的构造函数

public ArrayList<PolyTerm> terms;

public Poly(ArrayList<PolyTerm> terms)
{
    sort(terms);
    condenseExponents();
    this.terms = terms;
}

在我的主要 class 中,我的 Poly 对象是这样创建的:

PolyTerm poly1 = new PolyTerm(4, 3);
PolyTerm poly2 = new PolyTerm(-3, 1);
PolyTerm poly3 = new PolyTerm(15, 3);
PolyTerm poly4 = new PolyTerm(7, 2);

PolyTerm poly5 = new PolyTerm(14, 12);
PolyTerm poly6 = new PolyTerm(2, 0);
PolyTerm poly7 = new PolyTerm(19, 2);

ArrayList<PolyTerm> terms = new ArrayList<>();
    terms.add(poly1);
    terms.add(poly2);
    terms.add(poly3);
    terms.add(poly4);

ArrayList<PolyTerm> terms1 = new ArrayList<>();
    terms1.add(poly5);
    terms1.add(poly6);
    terms1.add(poly7);



Poly test = new Poly(terms);
Poly test2 = new Poly(terms1);

其中PolyTerm第一个取入的是系数,第二个取入的是指数。

所以回到保利class。

在我的构造函数中,我调用了condenseExponents(),它的意思是压缩为ArrayList并组合所有相似指数的系数。这是那个方法

private void condenseExponents()
{
    for(int i = 0; i < terms.size() - 1; i++)
    {
        for(int j = i + 1; j < terms.size(); j++)
        {
            if(terms.get(i).getExponent() == terms.get(j).getExponent())
                terms.set(i, new PolyTerm(terms.get(i).getCoef() + terms.get(j).getCoef(), terms.get(i).getExponent()));
                terms.remove(j);
        }
    }
}

NullPointer Exception 一直在该方法的 for loop 的第一行抛出。

有人知道为什么吗?

在你的函数调用之前分配术语;

public ArrayList<PolyTerm> terms;

public Poly(ArrayList<PolyTerm> terms)
 {
sort(terms);
this.terms = terms;
condenseExponents();
}