0

野球の統計のタブ区切りファイルを2次元配列リストに読み込む方法を探しています。スキャナーを使用してファイルを読み取っていますが、1行だけを配列リストに読み込み、改行で停止してから次の行を次の配列リストに読み込む方法を考えることができません。

多次元配列リストを作成するのはこれが初めてで、多次元配列を読み取るのとほとんど同じだと思いました。私は明らかに間違っていました。

    public static ArrayList dataRead(String fileloc) throws FileNotFoundException {
    ArrayList array = new ArrayList<ArrayList>();
    Scanner s = new Scanner(new File(fileloc)).useDelimiter("\t");
    ArrayList<String> rows = new ArrayList<String>();
    ArrayList cols = new ArrayList();
    while(s.nextLine() != null) {
        cols.add(s.next());
    }
    return array;
}

これが今の私のコードです。各行をreturnsで区切られた文字列に読み込んでから、各文字列を適切な配列リストに読み込む方がよいでしょうか。

4

3 に答える 3

4

opencsvを使用して、区切り文字をタブに設定できます。私が提供したリンクの例をチェックしてください。

CSVReader reader = new CSVReader(new FileReader("yourfile.csv"), '\t');
String [] nextLine;
while ((nextLine = reader.readNext()) != null) {
    // nextLine[] is an array of values from the line
    System.out.println(nextLine[0] + nextLine[1] + "etc...");
}

あなたの質問からは明らかではありませんが、「自分でロール」しようとしたときの実際の問題は何ですか

于 2012-04-04T18:25:59.220 に答える
1

統計がどのように表示されるかはわかりませんが、代わりにキーと値のペアを持つHas​​hMapを使用する方がよい場合がありますが、間違っている可能性があります。あなたのデータセットがどのように見えるかわかりません。

まず、「\t」エスケープ文字を使用して行を区切ることができます。例えば:

Scanner s = new Scanner(input).useDelimiter( "\ t");

次に、結果をループして、ペアごとにマップに追加できます。

于 2012-04-04T18:30:14.823 に答える
1

データ構造を、保存しようとしているものをより助長するものに再考する必要があると思います。プレーヤーオブジェクトを作成し、それを配列リストに格納することをお勧めします。

public class Player{
    double battavg;
    String name;
    //add more values like rbi, etc.
    public Player(name,battavg){
        this.name=name;
        this.battavg=battavg;
    }
    public String getName(){
        return name;
    }
    public String getBattAvg(){
        return battavg;
    }
    public setBattAvg(double battavg){
        this.battavg=battavg;
    }
    public setName(String name){
        this.name=name;
    }
}

public class baseball{
    public static void main(String[] args){
        ArrayList<Player> list = new ArrayList<Player>();
        //read in values from csv
        list.add(new Player(name,battavg));
    }
}
于 2012-04-04T18:47:10.527 に答える