(Java)执行顺序

时间:2015-10-19 15:09:32

标签: java

我的代码序列出了问题......

在这里。

            switch (j) {
                case 0:
                    enemy.setNewLife(j);
                    break;
                case 1:
                    enemy.setNewLife(j);
                    break;
                case 2:
                    enemy.setNewLife(j);
                    break;

            }

                switch (n) {
                    case 0:
                        player.setGun1();
                        enemy[j] = 
                        break;
                    case 1:
                        player.setGun2();
                        break;
                }
因此,敌人的生命是10。 然后枪的力量有4个

enemyshipLife - = gunpower

第一枪敌人生命= 6; boolean dead = false;

第二枪敌人生命= 2; boolean dead = false;

第三枪敌人生命值= -2; boolean dead = true;

我的枪不会得分......因为我的代码执行了setNewLife ...因此将布尔值更改为true ........

我尝试交换开关(n)的位置和if(enemyLife [j]< = 0&& dead [j] == false)...但我的枪仍然没有获得积分......如果枪的功率= 5 ......那么枪就会得到正确的点......

任何想法?

我只是想...为什么我的枪2得到了重点。如果原因是因为首先执行了setNewLife ..那么我的gun2也不会得到积分???现在这变得更奇怪了......

1 个答案:

答案 0 :(得分:0)

您在理解OO时遇到了一些严重问题。您将变量放在数组中,而将一些变量放在对象中。你应该把所有东西放在物体里面(例如敌人,枪,玩家)。

以例如:

{
   somekey1: "someval1",
   somekey2: "someval2",
   mystringkey1: "someval",
   mystringkey2: "someval"

}

enemy1.setNewLife(enemyLife[j]);

因为enemy1(Object),enemyLife []和dead [](Array)显然是相关的,你应该将它们放在同一个地方:

if (enemyLife[j] <= 0 && dead[j] == false)

然后你可以在Enemy-s数组中访问它们。

public class Enemy {
    protected int lifeScore;
    protected boolean dead;
    protected in position;
    //.. add constructor, getters
}