无法增加变量(面向对象编程)

时间:2013-09-01 01:26:06

标签: java oop static increment

我被困在Task2上,每次创建敌人时我都必须增加敌人的计数器。我已经创建了enemey船只并使计数器字段静止(我想打电话给柜台号码)

最终的解决方案应该增加数字敌人的计数器,我需要声明一个静态字段,该字段应该从0开始,当创建第一个元素时,应该将此字段增加到1,第二个增量为2,依此类推,那么你可以在打印第一行输出时使用这个feild的值。对于第一个敌人,你应该打印“敌人#1”第二个敌人应该打印“Enemy#2”等等。

所以这就是我在Enemyship课程中尝试的内容:

public class EnemyShip
{
    private int position;
    private int velocity;
    private int life;
    private static int number = 0;
    private boolean justHit;

    public EnemyShip()
    {
        System.out.println("Enemy #1");
        System.out.print("- Initial position: ");
        position = Global.keyboard.nextInt();
        System.out.print("- Initial velocity: ");
        velocity = Global.keyboard.nextInt();
    }

}

我做了公共的无效增量方法,并尝试使用它来增加,但它不起作用。想知道是否有人可以帮我解释我如何解决这个问题以及如何在java中增加变量。 感谢

public class Game { 
    private PlayerShip player;
    private EnemyShip enemy1; 
    private EnemyShip enemy2; 
    private EnemyShip enemy3; 
    public Game() { 
        player = new PlayerShip(); 
        enemy1 = new EnemyShip(); 
        enemy2 = new EnemyShip(); 
        enemy3 = new EnemyShip(); 
    } 
}           

3 个答案:

答案 0 :(得分:0)

为什么你需要一个increment()方法,为什么每次都增加3?

number变量为static,因此您可以在班级内的任何位置访问它。

使用它并在构造函数中递增它。

public EnemyShip()
{
    System.out.print("- Initial position: ");
    position = Global.keyboard.nextInt();
    System.out.print("- Initial velocity: ");
    velocity = Global.keyboard.nextInt();
    life = 10;
    boolean justHit = false;
    number++;
    System.out.println("Enemy #" + number);
}

每次致电

new EnemyShip();

您将看到声明

Enemy #[some number]

如果您想记住哪个EnemyShip有哪个号码,您可以添加一个实例字段。

private int shipNumber;

public EnemyShip()
{
    System.out.print("- Initial position: ");
    position = Global.keyboard.nextInt();
    System.out.print("- Initial velocity: ");
    velocity = Global.keyboard.nextInt();
    life = 10;
    boolean justHit = false;
    shipNumber = ++number;
    System.out.println("Enemy #" + shipNumber);
}

此解决方案在多线程环境中很危险。我仍然不知道你的increment()方法是什么。

修改

你似乎到处都是,缺乏一些关于类如何工作的细菌java知识。 阅读this和所有these

然后运行此代码

public class EnemyShip {
    private static int number = 0;

    public EnemyShip() {
        number++;
        System.out.println("Enemy #" + number);
    }

    public static void main(String[] args) {
        new EnemyShip();
        new EnemyShip();
        new EnemyShip();
    }
}

将输出

Enemy #1
Enemy #2
Enemy #3

答案 1 :(得分:0)

根据您提供的信息,我知道您每次创建敌舰时都必须增加counter的值。因此,每次调用构造函数时,都应增加计数器。因此,increment函数应如下所示:

public void increment()
{
number = number + 1;
System.out.println("Enemy " + number + "#");
}

答案 2 :(得分:0)

OP,你需要从某个地方调用increment方法。除非您调用该方法,否则该方法将不会运行。

public class Game { 
    private PlayerShip player;
    private EnemyShip enemy1; 
    private EnemyShip enemy2; 
    private EnemyShip enemy3; 
    public Game() { 
        player = new PlayerShip(); 
        enemy1 = new EnemyShip();  EnemyShip.increment();
        enemy2 = new EnemyShip();  EnemyShip.increment(); 
        enemy3 = new EnemyShip();   EnemyShip.increment();
    } 
} 

应该为你做得更好。