【问题标题】:Concatenate Variable Name?连接变量名?
【发布时间】:2017-04-05 19:41:28
【问题描述】:

场景:

  • 有两个分数。敌人得分和玩家得分。
  • 敌人得分变量是score0
  • 玩家得分变量是score1
  • 有一个全局变量 turn,它的值是 0 或 1。
  • 如果轮数为0:轮到敌人了
  • 如果轮到 1:轮到玩家了
  • 分数只能在玩家或敌人回合时更新。因此,0 和 1 与得分和转弯有关。

假设玩家得分为 5,轮到玩家时,她/他获得 1 分。所以我需要将玩家的分数更改为 6。每个数字都是一个可绘制的资源,标题为 n0、n1、n2、n3 等 (n0-n9)

这行得通:

所以如果 score=6,轮到玩家了,那么:

score1.setImageResource(getResources().getIdentifier("n" + score, "drawable", getPackageName()));

这也有效:

if (turn==0) { img = score0; }
else if (turn==1) { img = score1; }
img.setImageResource(getResources().getIdentifier("n" + score, "drawable", getPackageName()));

但我宁愿有这样的东西:

Image img = "score"+turn

有没有一种方法可以创建一个连接字符串和数字的变量来创建我要访问的变量名称?

编辑 / MOD推荐:我很欣赏模组为流畅性而进行的编辑。考虑到这是我第一篇关于堆栈溢出的帖子,我没有意识到有特定的格式。但是,我建议模组不要编辑段落的大块。尤其是当用户说她是 Java 新手时。因为人们提供的响应将基于技能水平。如果读者认为我精通 Java,他们会回答他们认为我理解的答案。但如果我说“我对此很陌生”——那是因为我正在寻找通俗易懂的答案。只是新模组的思考。

【问题讨论】:

  • 你为什么不把东西放在一个列表或数组中,让数字成为索引?
  • 使用Map。或List。或者一个数组。回答实际问题;是的,您可以使用 String 引用变量,但这很复杂,在您更高级之前不需要这样做。

标签: java variables concatenation


【解决方案1】:

所以我只是在谷歌上搜索了更多关于 Map/HashMap 的信息,我认为你是对的。对于我想要实现的目标来说,这可能太复杂了。

这个问题仍然没有答案。因此,对于将来阅读本文的任何人来说,最好有一个主题问题的答案(而不是“你应该这样做”的答案)。

我决定的解决方案(对于有类似问题的未来用户):是创建一个列表数组和一个更新分数的方法:

public void updateScore(int score){
scores.get(turn).setImageResource(getResources().getIdentifier("n" + score, "drawable", getPackageName())); }

WIP Project Screenshot

【讨论】:

    猜你喜欢
    • 2015-07-27
    • 1970-01-01
    • 2012-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-22
    • 1970-01-01
    • 2015-08-16
    相关资源
    最近更新 更多