0

我被困在 Task2 上,每次创建敌人时我都必须增加敌人的计数器。我已经创建了敌舰并使计数器字段变为静态(我想拨打计数器号码)

最终的解决方案应该增加我需要声明一个静态字段的敌人数量的计数器,该字段应该从 0 开始,当创建第一个敌人时应该将该字段增加到 1,第二个增加到 2 等等,然后你可以打印第一行输出时使用此字段的值。也就是说,对于第一个敌人,您应该打印“Enemy #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();
    }

}

我制作了 public void increment 方法并尝试使用它来增加,但它没有用。想知道是否有人可以帮助我解释如何解决这个问题以及如何在 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(); 
    } 
}           
4

3 回答 3

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 知识。阅读本文和所有这些

然后运行这段代码

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
于 2013-09-01T01:37:49.937 回答
0

根据您提供的信息,我知道您必须在counter每次创建敌舰时增加价值。所以每次调用构造函数时都应该增加计数器。所以你的increment函数应该是这样的:

public void increment()
{
number = number + 1;
System.out.println("Enemy " + number + "#");
}
于 2013-09-01T01:39:28.847 回答
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();
    } 
} 

应该为你做得更好。

于 2013-09-01T04:05:20.720 回答