导师问我们
如何创建一个名为addAlien
的新方法,该方法使用String
参数指定外星人的名字,并在方法中创建一个新的Alien对象,然后将其添加到{{1 }}
我刚刚写道:
ArrayList
答案 0 :(得分:2)
我希望你在寻找:
ArrayList<Alien> list = new ArrayList<>();
public void addAlien(String name) {
list.add(new Alien(name));
}
答案 1 :(得分:1)
在你的addAlien方法中,输入参数绑定到标识符&#39; name&#39;,如你所声明:
public void addAlien(String name) ...
因此,当用户将字符串传递给方法时,字符串可以通过标识符&#39; name&#39;来引用。并进一步用于其他目的。 但在此之后,您使用完全相同的标识符(即&#39; name&#39;)创建了Alien类型的变量。在进一步开发之前,应该清除这种混乱。
所以而不是
Alien name = new Alien()
你应该做
Alien newlyCreatedAlien = new Alien()
请注意,编译您编写的代码在语法上是合法的,它是一个名为&#34; shadowing&#34;的概念。如果您在理解或找到相关材料方面遇到困难,请告诉我。
最后,方法用户给出的字符串(现在存储并由标识符&#39; name&#39;表示)应该正确使用! 在这种情况下,我们正在创建(构造)一个新的Alien对象。通常,我们调用所谓的构造函数&#39;一个班级。
new Alien(someParameterPassedToTheConstructor)
存储在&#39; name&#39;中的信息因此应该通过构造函数的参数传递以创建特定的Alien。
new Alien(name)
将是满足需求的微不足道的解决方案。
请注意,在DhiwaTdG提供的解决方案中,新创建的Alien不会使用任何标识符存储(它已创建,然后直接添加到列表中)。这完全没问题,因为此方法不需要对此特定Alien执行进一步操作,然后将其添加到列表中。这是我们之后的列表,而不是外星人(至少在这种方法中)。
希望这会帮助你清理一些混乱。
答案 2 :(得分:0)
这应该会有所帮助。
List<Alien> list = new ArrayList<>();
public void addAlien(String name) {
list.add(new Alien(name));
}
class Alien{
String name;
public Alien(String name){
this.name = name
}
}