压缩 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();
}
所以我正在制作一个接受多项式函数并用它做不同事情的程序。
现在,我正在尝试创建一种方法来检查输入的多项式,它存储为 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();
}