HashMap put方法处的java.lang.NullPointerException

时间:2019-02-10 23:22:31

标签: java nullpointerexception hashmap

我在代码的一部分中遇到了NullPointerException问题。但是我找不到或看不到该问题的解决方案。

这是我的编码:

awk '{
    if (!/simsX.ip-17-31-28-19/) { a[".*Unauthorized.*Dup.*"] += gsub("(| ).*Unauthorized.*Duplication.*( |)", "&") }
    if (!/simsX.ip/) { a[".*En_NoConn-.*"] += gsub("(| ).*En_NoConn-.*( |)", "&")
}
'

public class Beurs private HashMap<String, Aandeel> lijstAandelen; private HashSet<String> lijstKeys; /** * Maak een constructor van de klasse Beurs */ public void Beurs() { lijstAandelen = new HashMap<>(); lijstKeys = new HashSet<>(); } public void addAandeel(Aandeel aandeel) { if(aandeel != null){ String code = aandeel.getCode(); lijstAandelen.put(code, aandeel); lijstKeys.add(aandeel.getCode()); } } 包含一个对象,代码也包含一个有效的String。 因此,NullPointerException抛出: lijstAandelen.put(code,aandeel);

可能我正在查看它,希望我能帮助我。

Aandeel编码:

aandeel
  

nullpointerException:java.lang.NullPointerException在   Beurs.addAandeel(Beurs.java:35)在Hoofd.main(Hoofd.java:31)

public class Aandeel


private String code;
private String naam;
private double dividend;
private double[] waarden;

public Aandeel(String code, String naam, double dividend, double[] tab)
{
    this.code = code;
    this.naam = naam;
    setDividend(dividend);
    waarden = new double[12];
    setWaarden(tab);
}

public String getCode()
{
    return code;
}

3 个答案:

答案 0 :(得分:1)

更改Beurs类的这一行:

public void Beurs()

对此:

public Beurs()

您可以检查if语句中的code是否为null。像这样:

if(aandeel != null && aandeel.getCode() != null)

答案 1 :(得分:1)

您的类正在调用默认的空构造函数,因为您创建了具有返回类型的构造函数,该返回类型具有正确的方法语法。

public void Beurs()
{
    lijstAandelen = new HashMap<>();
    lijstKeys = new HashSet<>();
}

这就是为什么您的地图为空的原因。

答案 2 :(得分:0)

构造函数没有返回类型,因此您的构造函数定义错误

  

public void Beurs()//错误

因此Beurs类没有构造函数,因此它正在调用空构造函数,并且lijstAandelen,lijstAandelen没有初始化

顺便说一句,您应该像下面在Beurs类中那样更改构造函数

public Beurs()
{
    lijstAandelen = new HashMap<>();
    lijstKeys = new HashSet<>();
}