gpt4 book ai didi

java - 尝试在java中返回HashMap值时出现空指针异常

转载 作者:行者123 更新时间:2023-12-01 18:32:39 26 4
gpt4 key购买 nike

我正在处理我的 java 项目,并在尝试返回 HashMap 值时收到空指针异常消息。

public class NgramModel
{
private HashMap<String,Integer> ngram;

public NgramModel()
{
HashMap<String,Integer> ngram = new HashMap <String, Integer>();
ngram.put("aa", 2);
}

public HashMap<String,Integer> getValue() {
return ngram;
}
}

当我的 JUnit 测试到达线路时:

assertEquals(2,(int)test.getValue().get("aa"));

我收到:没有异常消息。并且测试崩溃了。

最佳答案

您需要了解变量阴影。

从一个简单的示例开始,不使用构造函数:

static int test = 10;

public static void main(final String[] args) throws IOException {
int test = 20;
System.out.println(test);
}

这段代码打印什么?

答案是20。原因是您在方法中声明的 test 实际上与您在类中声明的 不同 test 。您有两个处于不同作用域的变量。

您在这里遇到了同样的问题:

public class NgramModel {

//one `ngram`
private HashMap<String,Integer> ngram;

public NgramModel() {
//a second `ngram`
HashMap<String,Integer> ngram = new HashMap <String, Integer>();
ngram.put("aa", 2);
}
}

不需要需要重新声明变量:

public class NgramModel {

//one `ngram`
private HashMap<String,Integer> ngram;

public NgramModel() {
//reference the `ngram` from above
ngram = new HashMap <String, Integer>();
ngram.put("aa", 2);
}
}

关于java - 尝试在java中返回HashMap值时出现空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23448238/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com