我目前对部分作业感到有些困惑,希望你能告诉我出错的地方。
我正在构建一个简单的iTunes程序,目前正致力于让所有音乐人参与特定音轨并将其显示为字符串(例如" Frank Black,Joey Santiago,Kim Deal&# 34;等等)此方法需要通过检索Artist对象内的数组列表并显示它来工作。
我的get()
方法遇到了问题。我知道我应该实现get()
方法,以便Track对象可以访问Artist对象中的字段,但我尝试这样做的所有方法都发送了错误消息。到目前为止,我已经尝试了一个增强的for循环'像这样:
for (String member : members.getMembers() ) {
其中'成员'是一个ArrayList
,其中包含每个音乐家姓名的String
,但是发送了#34;无法找到符号 - 变量成员"。然后我尝试了这个:
for (String member : Artist.members.getMembers() ) {
但是说"非静态变量成员不能从静态上下文引用"。我感觉我在这里遗漏了一些非常基本的东西。你们中的任何人都知道它可能是什么......?
答案 0 :(得分:0)
如果member是一个包含字符串的arrayList,那么你应该这样做
for (String m: members){
}
或
for (String m : Artist.members){
}
适用于你的地位
答案 1 :(得分:0)
这里Artist
是一个类,而不是类的实例。通常,艺术家没有任何成员,而John Doe尤其可以拥有成员列表。
你需要获得一个Artist实例才能要求他的成员
答案 2 :(得分:0)
假设每个Track
有一个Artist
,而每个Artist
可能有多个音乐家(成员),那么您正在寻找这样的内容:
public class Artist {
private List<String> members;
// ...
public List<String> getMembers() {
return Collections.unmodifiableList(members);
}
}
public class Track {
private Artist artist;
// ...
public String getMusicians() {
StringBuilder sb = new StringBuilder();
int length;
for (String member : artist.getMembers()) {
sb.append(member).append(", ");
}
return sb.substring(0, sb.length() - 2);
}
}
答案 3 :(得分:0)
首先,您需要实例化一个Artist
对象,然后迭代包含艺术家的ArrayList<String>
。
class Artist {
private List<String> artists;
...
public List<String> getArtists() {
return artists;
}
...
}
然后当你想迭代它
public static void main(String[] args) { //or where ever you call it from
members = new Artist();
// do stuff to members object
for (String m : members.getArtists())
System.out.print(m + " ");
System.out.println();
}