我有三个* .csv文件,并且正在使用接口比较对象。
我的问题是:如何仅将某些数据添加到数组列表?
例如,我只需要items[1]
,即yearID
,items[2]
,即teamID
,items[11]
,即homeRuns
,以及{ {1}},即items [12]
的值。
如何在将它们添加为RBI
类的值的同时将它们添加到arrayList
中,然后将数组列表传递给另一个类呢?这是文件的前两行
playerID yearID stint teamID lgID G AB R H 2B 3B HR RBI SB CS BB SO IBB HBP SH SF GIDP abercda01 1871 1 TRO NA 1 4 0 0 0 0 0 0 0 0 0 0
Batter.java
Batter
Players.java
import java.util.ArrayList;
import java.util.Scanner;
public class Batter extends Player{
private int YearID;
private String TeamID;
private int HomeRuns;
private int RBI;
public Batter(int yearID, String teamID, int homeRuns, int rBI) {
super();
YearID = yearID;
TeamID = teamID;
HomeRuns = homeRuns;
RBI = rBI;
}
Batter() throws Exception{
ArrayList<String> battingData= new ArrayList<String>();
ArrayList<String> masterData= new ArrayList<String>();
ArrayList<String> pitchingData= new ArrayList<String>();
Scanner myScan1= new Scanner(new File("Batting.cvs"));
while(myScan1.hasNext()) {
while(myScan1.hasNext()) {
battingData.add(myScan1.nextLine());
String line= myScan1.nextLine();
String items[]= line.split(",")
for( int i= 0; i<battingData.size(); i++){
battingData.add(new Players(Integer.parseInt(items[0]));
}
}
}
答案 0 :(得分:1)
一些要点。您不必要地循环了两次myScan1.hasNext()。 当您两次调用nextLine时,您还丢弃了一行。 我在下面提出了有关如何实现所需目标的建议。
while (myScan1.hasNext()) {
String line = myScan1.nextLine();
battingData.add(line);
String items[]= line.split(",")
for( int i= 0; i<battingData.size(); i++){
String yearID = items[1];
String teamID = items[2];
String homeRuns = items[11];
String rbi = items[12];
// do what you need to do with these variables
}
}