这是Element
类:
public class Element {
private String elementName;
private int atomicNumber;
private String Symbol;
private double atomicWeight;
public Element()
{
}
public String getElementName()
{
return elementName;
}
public int getAtomicNumber()
{
return atomicNumber;
}
public String getSymbol()
{
return Symbol;
}
public double getAtomicWeight()
{
return atomicWeight;
}
public void setElementName(String elementName)
{
this.elementName = elementName;
}
public void setAtomicNumber(int atomicNumber)
{
this.atomicNumber = atomicNumber;
}
public void setSymbol(String Symbol)
{
this.Symbol = Symbol;
}
public void setAtomicWeight(double atomicWeight)
{
this.atomicWeight = atomicWeight;
}
}
我正在尝试制作此课程的Array
,这是我的mainU.java
课程:
public class mainU {
public static void main(String[] args){
Element[] element = new Element[103];
element[0].setElementName("H");
String s = element[0].getElementName();
System.out.println(s);
}
问题是我收到了这个错误:
Exception in thread "main" java.lang.NullPointerException
at mainU.main(mainU.java:14)
任何人都可以告诉我我遇到这样的错误的原因? 我让我的程序尽可能简单,以便你能够帮助我。
答案 0 :(得分:2)
问题在于:
Element[] element = new Element[103];
element[0].setElementName("H");
您在访问第一个元素之前没有创建它。你创建数组但它不会自动包含所用类型的新对象,你必须明确声明这些,例如:
element[0] = new element();
然后你可以使用这个对象。
答案 1 :(得分:1)
创建新的对象数组将产生填充null
的数组。如果需要有对象,则必须在创建数组后对其进行迭代,并使用新实例填充它。
答案 2 :(得分:1)
您需要创建对象。您刚刚创建了对象引用数组。
Element[] element = new Element[103];
for(int i=0; i<103; i++) {
element[i] = new Element();
}
由于您的元素是对象(数组是对象),因此它存储在堆上。所有Element对象引用都初始化为null值。因此您将获得NPE
s。
Element[] element = new Element[103];
element[0].setElementName("H"); // element[0] is null
答案 3 :(得分:1)
你只是初始化了Element Array但从未初始化过它的元素,
Element[] element = new Element[103];
element[0].setElementName("H");// this cause NPE as element[0] is null
您需要初始化以下元素:
Element[] element = new Element[103];
element[0] = new Element();
element[0].setElementName("H");
答案 4 :(得分:1)
声明一个数组,比如初始化数组对象,但不是数组的元素。您需要在数组的每个索引处创建一个Element对象。
element[0] = new Element();
element[0].setElementName("H");
答案 5 :(得分:1)
创建对象数组时,所有元素都会初始化为null
。您只需创建一个新的Element
对象并将其添加到数组中,如下所示:
Element[] elems = new Element[100];
elems[0] = new Element();
elem[0].setElementName("asdf");
答案 6 :(得分:1)
您尚未初始化element[0]
。您需要首先初始化它,实际上是每个数组元素,如果您打算使用它们。
element[0]=new Element();
或者您可以使用循环
初始化所有这些 for(int i=0;i<element.length;i++)
{
element[i]=new Element();
}
答案 7 :(得分:0)
在这两行之间
Element[] element = new Element[103];
element[0].setElementName("H");
您需要创建element[0]
,即构建Element
的新实例。在您的代码中element[0]
为空,因此当您致电NullPointerException
时setElementName
。