所以这是为了一个学校的任务,但我现在已经工作了几个小时,我已经失去了希望。分配的想法是创建一个主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中获取正确的数据(歌曲,艺术家,专辑和长度),我应该做些什么。谢谢。
答案 0 :(得分:0)
建议:
ArrayList<Object>
更改为ArrayList<MP3>
。如果您在此处使用有效的通用列表,编译器将帮助确保在编译时您只将MP3对象添加到列表中。这是使用泛型的主要原因之一。addMP3
方法。您当前的代码会创建一个MP3对象,但不会对其执行任何操作。相反,在该方法中将创建的MP3添加到mp3List ArrayList。 outputInfo
方法中实际输出ArrayList中的数据。你在这里不需要StringFormat,只需一个简单的println即可。getCount()
方法只需返回mp3List的大小即可。因此,不需要count int字段。