Java HashMap未按预期运行

Java HashMap未按预期运行,java,android,hashmap,Java,Android,Hashmap,我制作了一个3 x 3的矩阵。 单击其中一个框将元素添加到hashmap 例如,单击第一个框将“imageView1”作为键添加到hashmap中,将“true”作为值添加到hashmap中 有两个玩家,因此有两个hashmaps player1和player2 player1.put("imageView1","true"); 因此,当任何一个播放器单击框时,相应的框名称将添加到相应的hashmap中 然后检查玩家是否赢了 if(player1.containsKey("imageVie

我制作了一个3 x 3的矩阵。 单击其中一个框将元素添加到hashmap 例如,单击第一个框将“imageView1”作为键添加到hashmap中,将“true”作为值添加到hashmap中

有两个玩家,因此有两个hashmaps player1和player2

player1.put("imageView1","true");
因此,当任何一个播放器单击框时,相应的框名称将添加到相应的hashmap中

然后检查玩家是否赢了

  if(player1.containsKey("imageView1") 
     &&player1.containsKey("imageView2")
     &&player1.containsKey("imageView3")){
        return true;
    }
但这不起作用。你能帮我吗? 注意:我没有把整个算法。。我刚刚检查了1个条件(即,如果检查了1 2 3,那么玩家1赢了,就像井字游戏一样)

这些是档案

MainActivity.java(原件)()

MainActivity.java(压缩)()


Content\u Main.xml()

您的代码看起来不错,但我建议您检查一下

getResources().getResourceName(view.getId())
正在放置在地图中。具体而言,您应该确认:

getResources().getResourceName(view.getId()).equals("imageView1")
getResources().getResourceName(view.getId()).equals("imageView2")
getResources().getResourceName(view.getId()).equals("imageView3")
getResources().getResourceName(view.getId()).equals("imageView4")
...
getResources().getResourceName(view.getId()).equals("imageViewN")

至少一次为true。即,您需要确保输入的
字符串与调用
.contains()
时完全相同,否则您将永远无法获得与
.contains()匹配的字符串

请阅读此文。@PaulBoddington感谢您指出这一点。我制作了一个新项目并制作了一个压缩版本,删除了默认和未编辑的代码行(导入语句除外)。您好,我在一个在线java编译器中尝试了用“&&”进行提取,结果返回“true”当使用exach hashmap将imageView1转换为imageView 3时,我通过Log.i(“Value”、“”+getResources().getResourceName(view.getId());获取值,用于创建hashmap密钥对..然后执行它。它工作正常。。。