我正在努力解决我正在做的家庭作业问题。 我需要创建一个包含Song对象数组的“Library”类(容量为10)。 然后创建一个方法addSong。 这是我到目前为止所做的:
public class Library{
Song[] arr = new Song[10];
public void addSong(Song s){
for(int i=0; i<10; i++)
arr[i] = s;
}
}
我的问题是:是否有其他方法来填充阵列?我稍后需要根据索引值搜索一首歌。所以我将创建一个方法,如: 公共歌曲getSong(int idx) 感谢您的回答!
答案 0 :(得分:4)
如果你真的必须使用数组(而不是ArrayList或LinkedList),这个解决方案可能适合你:
public class Library{
private Song[] arr = new Song[10];
private int songNumber = 0; //the number of Songs already stored in your array
public void addSong(Song s){
arr[songNumber++] = s;
}
}
如果要添加超过10首歌曲,则要避免运行时执行:
public void addSong(Song s){
if(songNumber<10)
{
arr[songNumber++] = s;
}else{
//what to do if more then 10 songs are added
}
}
答案 1 :(得分:2)
有很多方法可以实现这一目标。
你正在使用的逻辑或多或少都可以。
但你在这做什么:
public void addSong(Song s){
for(int i=0; i<10; i++)
arr[i] = s;
}
用相同的歌曲填充所有的歌曲数组,也许这会更好:
public void addSong(Song s, int index){
arr[index] = s;
}
当然,如果您传递负指数或大于9的指数,您将遇到麻烦。
答案 2 :(得分:1)
使用ArrayList代替数组。这样,您可以使用ArrayList.add()
函数附加到数组的末尾,并使用ArrayList.get(int index)
函数来获取索引index
处的数组条目。
public class Library{
ArrayList<Song> arr = new ArrayList<Song>();
public void addSong(Song s){
arr.add(s);
}
public Song getSong(int index){
return arr.get(index);
}
}
答案 3 :(得分:0)
扩展Vacation9s的回答:
ArrayList<Song> songArray = new ArrayList<Song>();
public void addSong(Song s){
songArray.add(s);
}