我被困在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();
}
}
答案 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();
}
}
应该为你做得更好。