【问题标题】:Change the value of a variable each time another variable changes每次另一个变量更改时更改一个变量的值
【发布时间】:2015-01-01 06:40:31
【问题描述】:

我目前正在用Java制作文字冒险游戏,但遇到了一个问题:

每次特定int 变量的值更改时,我都需要更改String 变量的值。 我希望程序在每次int 变量的值发生变化时执行此任务(然后从中断处继续):

if (enemyposition == 1) {
    enemyp = "in front of you";
}
else if (enemyposition == 2) {
    enemyp = "behind you";
}
else if (enemyposition == 3) {
    enemyp = "to your left";
}
else if (enemyposition == 4) {
    enemyp = "to your right";
}
else {
    enemyp = "WOAH";
}

谢谢! :D

【问题讨论】:

  • 您有问题吗?
  • 当您需要enemyp 的值而不是连续计算时,可能更容易进行此计算。
  • 我的问题是:请停止

标签: java string loops variables int


【解决方案1】:

您提出的问题听起来可以通过创建一个保存enemyposition 整数的类来回答。在你的类中添加一个“setter”方法来设置整数。您可以编写您的 setter 方法,以便在设置整数时,它也设置一个字符串。然后编写一个“getter”方法来检索字符串。这是确保两个变量一起变化的一种常用方法。

public class EnemyPosition {
    private int enemyposition;
    private String enemyp;
    public void setPosition(int n) { 
        enemyposition = n;
        enemyp = [adapt your code to set this based on the position]
    }
    public String getEnemyp() { 
         return enemyp;
    }
}

我敢肯定有很多细节缺失,但你明白了。然后在其余代码中使用EnemyPosition enemyposition = new EnemyPosition(),而不是int enemyposition,并使用setPosition 方法而不是分配给它。

这不是唯一的解决方案(将整数映射到字符串的数组或 Map 可能就足够了),但它是一种 OOP 方式。

【讨论】:

  • 谢谢!我现在将尝试实现它,并让你知道它是如何进行的。 :D
【解决方案2】:

您可以使用数组使代码更短。

String[] message = {"WOAH", // 0
                    "in front of you", // 1
                     "behind you", // 2
                     "to your left", // 3
                     "to your right"}; // 4
enemyp = (enemyposition > 0 && enemyposition < 5) ? message[enemyposition] : 
                                                    message[0];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-25
    • 1970-01-01
    • 1970-01-01
    • 2012-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-30
    相关资源
    最近更新 更多