0

我在将字符串和 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());
}
4

5 回答 5

3

必须知道,那:

  1. 不能将原语添加到List.
  2. a 中的对象List应该是一种类型。

作为一种解决方法,您可以执行以下操作:

this.playcount = Integer.parseInt(rep[3]);

这将转换Stringint您将能够将其分配给您的PlaycountData对象。

于 2013-10-16T11:40:41.327 回答
1

尝试将 String 转换为 int。

this.playcount = Integer.parseInt(rep[3]);
于 2013-10-16T11:40:07.363 回答
0

实现此目的的其他方法将字符串标记转换为整数

this.playcount = Integer.valueOf(rep[3]);
于 2013-10-16T11:51:41.030 回答
0

您已经将 PlaycountData 对象添加到 List 中,看起来不错。您需要以正确的方式构造对象。

这条线

//this.playcount = rep[3];

然后可能应该阅读

this.playcount = Integer.parseInt(rep[3]);
于 2013-10-16T11:41:24.007 回答
0

您需要解析Stringtoint以将值分配给playcountPlaycountData正在创建的内容。

public PlaycountData(String[] rep) {
        this.userID = rep[0];
        this.artistID = rep[1];
        this.artistName = rep[2];
        this.playcount = Integer.parseInt(rep[3]); // Uncomment this and parse the string to int
}
于 2013-10-16T11:41:37.717 回答