所以这是学校的作业,但我已经做了几个小时了,我已经失去了希望。任务的想法是创建一个主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中获取正确的数据(歌曲、艺术家、专辑和长度)。非常感谢。
建议:
- 将MP3List ArrayList从
ArrayList<Object>
更改为ArrayList<MP3>
。如果您在此处使用有效的通用列表,编译器将帮助确保在编译时仅将MP3对象添加到列表中。这是使用泛型的主要原因之一 - 将MP3List重命名为MP3List以符合Java命名标准——所有变量和方法名称都应该以小写字母开头
- 修复您的
addMP3
方法。您当前的代码创建了一个MP3对象,但对它不做任何操作。相反,在方法中,将创建的MP3添加到mp3ListArrayList中 - 在
outputInfo
方法中,实际输出ArrayList中的数据。这里不需要StringFormat,只需简单的println即可 getCount()
方法只需要返回mp3List的大小,仅此而已。因此,不需要count int字段