Java MP3 Loop ArrayList

时间:2016-05-01 21:03:28

标签: java arraylist

所以这是为了一个学校的任务,但我现在已经工作了几个小时,我已经失去了希望。分配的想法是创建一个主MP3类,然后使用另一个类标题MP3Collection,创建新的MP3对象并将它们添加到ArrayList,然后打印出来编号和所有数据。

我在尝试找出如何循环和打印ArrayList的值时遇到问题

这是MP3.java的代码,虽然它主要是获取和设置功能。<​​/ p>

    public class MP3 {

    //Initiate Variables
    private String artist;
    private String song;
    private String album;
    private int trackLength;

    //Constructor
    public MP3(String artistName, String songName, String albumName, int trackLeng){
        setArtist(artistName);
        setSong(songName);
        setAlbum(albumName);
        setLength(trackLeng);
    }

    //**** Set Functions ****

    //Set Artist
    public void setArtist(String artistName){ artist = artistName; }

    //Set Song
    public void setSong(String songName){ song = songName; }

    //Set Album
    public void setAlbum(String albumName){ album = albumName; }

    //Set Length
    public void setLength(int trackLeng){ trackLength = trackLeng; }


    //**** Get Functions ****

    //Get Artist
    public String getArtist(){ return artist; }

    //Get Song
    public String getSong(){ return song; }

    //Get Album
    public String getAlbum(){ return album; }

    //Get Length
    public int getLength(){ return trackLength; }

    //To String
    public String toString(){

        if(getLength() <= 0) {
            setLength(60);
        }

        return String.format("%s, %s, %s, %d : %d",
            getArtist(), getSong(), getAlbum(),
            getLength() / 60, getLength() - (getLength() / 60) * 60); //Converts Seconds to Min : Sec
    } 
}

第二部分是能够创建一个名为MP3Collection的类并向arrayList添加值。我之前没有使用过ArrayList,我觉得这就是为什么这会变得很痛苦。

import java.util.ArrayList;

public class MP3Collection {

    //Instance Variables
    private int count = 0;
    ArrayList<Object> MP3List = new ArrayList<Object>();

    //Get Method
    public int getCount(){ return count; }

    //Set Method
    public void addMP3(String artist, String song, String album, int length) {
        MP3 newInfo = new MP3(artist, song, album, length);
    }

    public void outputInfo() {

        for (int i=0; i < MP3List.size(); i++) {            
            String sonOutput = String.format("Song[%d]: %s: %s, %s, %d", count, artist, song, album, length);
        }
    }
}

很明显,outputInfo函数是我的麻烦所在。我尝试使用计数器作为获取信息的方法,但是,因为它是一个Object ArrayList,所以它给了我一个错误。

我不确定为了从ArrayList中获取正确的数据(歌曲,艺术家,专辑和长度),我应该做些什么。谢谢。

1 个答案:

答案 0 :(得分:0)

建议:

  1. 将您的MP3List ArrayList从ArrayList<Object>更改为ArrayList<MP3>。如果您在此处使用有效的通用列表,编译器将帮助确保在编译时您只将MP3对象添加到列表中。这是使用泛型的主要原因之一。
  2. 将MP3List重命名为mp3List以符合Java命名标准 - 所有变量和方法名称都应以小写字母开头。
  3. 修复您的addMP3方法。您当前的代码会创建一个MP3对象,但不会对其执行任何操作。相反,在该方法中将创建的MP3添加到mp3List ArrayList。
  4. outputInfo方法中实际输出ArrayList中的数据。你在这里不需要StringFormat,只需一个简单的println即可。
  5. getCount()方法只需返回mp3List的大小即可。因此,不需要count int字段。