【发布时间】:2018-11-11 16:13:31
【问题描述】:
我试图在一个循环中实例化三个对象,这样我就不会重用构造函数文本。这是因为,对于 Uni,如果我们重复使用同一行代码(它会自动标记),我们就会被标记。
我的代码如下:
EnemyShip enemy1;
EnemyShip enemy2;
EnemyShip enemy3;
public Game()
{
for (int i = 1; i <= 3; i++) {
getEnemyRef(i) = new EnemyShip(); //getEnemyRef unexpected type - required:variable found:value
//enemy1 = new EnemyShip(); works normally
}
}
i 带有下划线,我被告知它是一个值而不是变量。
请注意,我使用以下代码而不是列表或数组,因为我们不允许将它们用于此任务。
public EnemyShip getEnemyRef(int enemy) {
switch (enemy)
{
case 1:
return enemy1;
case 2:
return enemy2;
case 3:
return enemy3;
}
return null;
}
标记系统根据一行在源代码中的编写次数而不是执行次数来确定重复使用的次数
【问题讨论】:
-
在赋值时需要准确的变量名。先做
EnemyShip e1 = getEnemyRef(i);,再做e1 = new enemyShip() -
你可能想要这样的东西:
EnemyShip enemy = getEnemyRef(i); -
getEnemyRef(i)是一个方法,因此返回一个值。您不能将某些东西赋值给一个值(因此编译器消息:required:variable found:value)。你的构造函数调用不是问题,赋值(或更准确地说:赋值的左侧)是问题。 -
看来你需要了解数组和/或列表。
-
我喜欢课堂教你糟糕的编码练习,以便让你使用某种方法以某种方式做某事,而实际上你永远不会那样做
标签: java loops instantiation code-reuse