用对象填充数组

时间:2013-07-31 22:37:43

标签: java

我正在努力解决我正在做的家庭作业问题。 我需要创建一个包含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) 感谢您的回答!

4 个答案:

答案 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);
}