我在将字符串和 int 值都添加到数组列表时遇到问题。我正在从 tsv 文件中读取数据,[String String String int] 格式。当所有标记都是字符串时它工作正常,但我需要让 int 稍后进行一些计算。
当我尝试使用 int 值时,它不起作用。我应该尝试将 int 添加到 arraylist 还是之后解析?
谢谢你的帮助!
public class PlaycountData {
//declare variables
public String userID;
public String artistID;
public String artistName;
public int playcount;
public PlaycountData(String userID, String artistID, String artistName, int playcount){
this.userID = userID;
this.artistID= artistID;
this.artistName= artistName;
this.playcount= playcount;
} // end constructor
public PlaycountData(String[] rep) {
this.userID = rep[0];
this.artistID = rep[1];
this.artistName = rep[2];
//this.playcount = rep[3];
}
// getter methods
public String getUserID(){
return userID;
}
public String getArtistID(){
return artistID;
}
public String getArtistName(){
return artistName;
}
public int getPlaycount(){
return playcount;
}
// setter methods
public void setUserID(String userID){
this.userID = userID;
}
public void setArtistID(String artistID){
this.artistID = artistID;
}
public void setArtistName(String artistName){
this.artistName = artistName;
}
public void setPlaycount(int playcount){
this.playcount = playcount;
}
@Override
public String toString(){
return userID + artistID + artistName + playcount;
}
}
public class LastFm {
static ArrayList<PlaycountData> playcountRecords;
public static void main(String [ ] args) throws IOException{
playcountRecords = new ArrayList<PlaycountData>(); // create a new arraylist of type PlaycountData
String fileName = "C:\\Users\\Siân\\Desktop\\sample2.tsv";
BufferedReader br = new BufferedReader(new FileReader(fileName)); // allows us to read contents of file
String line;
try{
while((line = br.readLine()) != null ){ // keep reading if there are more lines in the file
String[] rep = line.split("\t"); // enter the split line into an array
PlaycountData playrep = new PlaycountData(rep); // create new PlaycountData object
playcountRecords.add(playrep); // add array to arraylist
} }catch(IOException e){
System.err.println("An error has occurred" + e);
System.exit(-1);
} finally{
if(br != null)
br.close(); // close the stream
}
for(PlaycountData pr: playcountRecords){
System.out.println(pr.getUserID() + " " + pr.getArtistID() + " " + pr.getArtistName()
+ " " + pr.getPlaycount());
} // outputs all the data
int[] plays = new int[playcountRecords.size()]; // create an int array to hold the playcounts
for(PlaycountData pr2: playcountRecords){
System.out.println(pr2.getPlaycount());
}