我的代码遍历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));
}
结果是:
答案 0 :(得分:2)
您正在使用字符串键并尝试使用char键获取相同内容。
请注意,在Java中"x"
不等于'x'
您可以将Map更改为char键或使用String数组。由于它们是单个字母,我建议将它们与Char's保持一致。