【问题标题】:HashMap not functioning as expectedHashMap 未按预期运行
【发布时间】:2015-12-02 16:13:22
【问题描述】:

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

有两个 player ,因此有两个 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(原始) (http://pastebin.com/AtypDtuC)

MainActivity.java(压缩) (http://pastebin.com/gJCud9WE)

Content_Main.xml (http://pastebin.com/vsWd0Jii)

【问题讨论】:

  • 请阅读此内容。 stackoverflow.com/help/mcve
  • @PaulBoddington 感谢您指出这一点。我做了一个新项目,做了一个精简版,去掉了默认和未编辑的代码行(除了导入语句)。

标签: java android hashmap


【解决方案1】:

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

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")

至少为真一次。 IE。您需要确保输入的Strings 与您调用.contains() 时完全相同,否则您将永远无法与.contains() 匹配

【讨论】:

  • 您好,我尝试在在线 java 编译器中使用“&&”进行提取,当 imageView1 到带有 exach 哈希图的 imageView 3 时它返回“true”,我通过 Log.i("Value ",""+getResources().getResourceName(view.getId()) ) ;用于创建 hashmap 密钥对 .. 然后执行它。并且它工作正常......
猜你喜欢
  • 2015-09-19
  • 2014-11-12
  • 1970-01-01
  • 2020-06-28
  • 2012-02-18
  • 2018-01-18
  • 2012-06-14
  • 2019-03-03
  • 2012-09-21
相关资源
最近更新 更多