**结案。**此问题不可复制或由打字错误引起。它目前不接受答案。
**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。
5天前关门了。
改进这个问题
这段代码应该将窗口上的所有可用空间放入带有字符串键的hashmap中。然后,应该从hashmap中删除snake占用的所有空间,但是remove函数返回null。当跳出hashmap时,snake的位置键会显示它。这里有什么问题?
HashMap<String, Integer> cells = new HashMap<>();
for (int i = 0; i <= WINDOW_WIDTH - UNIT_SIZE; i += UNIT_SIZE) {
for (int j = 0; j <= WINDOW_HEIGHT - UNIT_SIZE; j += UNIT_SIZE)
cells.put(i + " " + j, 1);
}
System.out.println("map"+cells);
for (Rectangle s : snake){
System.out.println((int)s.getX() + " " + (int)s.getY());
System.out.println(cells.remove(s.getX() + "-" + s.getY()));
}
这里是控制台输出
map{0 0=1, 80 160=1, 80 120=1, 0 160=1, 80 200=1, 80 80=1, 0 120=1, 80 40=1, 160 120=1, 80 0=1, 200 120=1, 40 40=1, 40 0=1, 200 0=1, 120 200=1, 160 200=1, 200 200=1, 160 160=1, 40 200=1, 160 80=1, 40 120=1, 200 40=1, 40 160=1, 120 120=1, 200 80=1, 120 160=1, 200 160=1, 40 80=1, 160 0=1, 0 200=1, 120 0=1, 120 40=1, 0 40=1, 120 80=1, 160 40=1, 0 80=1}
0 0
null
0 40
null
0 80
null
0 120
null
1条答案
按热度按时间fjaof16o1#
事实上,你正在铸造
s.getX()
以及s.getY()
至int
表明他们不是int
. 因此,您要删除的密钥实际上不在Map
.为了移除正确的键,您还应该
s.getX()
以及s.getY()
至int
在召唤中remove()
.哦,还要把“-”改成“,”以便键匹配。