Java MP3循环数组列表



所以这是学校的作业,但我已经做了几个小时了,我已经失去了希望。任务的想法是创建一个主MP3类,然后使用另一个名为MP3Collection的类,创建新的MP3对象并将其添加到ArrayList中,然后打印出编号和所有数据。

我在试图弄清楚如何循环和打印ArrayList 的值时遇到了问题

这是MP3.java的代码,尽管它主要是获取和设置函数。

    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函数是我的问题所在。我曾尝试使用counter来获取信息,但由于它是Object ArrayList,它给了我一个错误。

我不确定我应该做什么才能从ArrayList中获取正确的数据(歌曲、艺术家、专辑和长度)。非常感谢。

建议:

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

最新更新