为什么map.get()函数为null?

时间:2017-10-25 14:13:43

标签: java nullpointerexception hashmap

我的代码遍历char数组(char [] charArray),并找到键。然后使用该键在Map中查找值。但是,map.get()函数给我一个null,即使我把它设置为一个值,我不知道为什么。谢谢!

    parameters for this method are:
    LinkedBinaryTree<String> and HashMap<String, Integer>

    for (int i = 0; i < charArray.length; i++) {
        if (Character.isLetter(charArray[i])) {
            // Why is map.get(charArray[i]) null??
            String char2String = Character.toString(charArray[i]);
            if (map.get(char2String) == null) {
                throw new IllegalArgumentException("int is null");
            }

            int k = map.get(char2String);
            charArray[i] = Integer.toString(k).charAt(0);
        }
    }

这是我为测试方法而编写的测试用例。

@Test
public void testSubstituteMap() {
    LinkedBinaryTree<String> tree2 = Assignment.prefix2tree("- x + 1 + x x");
    HashMap<String, Integer> Map = new HashMap<String, Integer>();
    Map.put("x", 5);
    tree2 = Assignment.substitute(tree2, Map);
    LinkedBinaryTree<String> expected = Assignment.prefix2tree("- 5 + 1 + 5 5");
    assertEquals(Assignment.tree2prefix(expected), Assignment.tree2prefix(tree2));
}

结果是:

Failure Trace

1 个答案:

答案 0 :(得分:2)

您正在使用字符串键并尝试使用char键获取相同内容。

请注意,在Java中"x"不等于'x'

您可以将Map更改为char键或使用String数组。由于它们是单个字母,我建议将它们与Char's保持一致。