0

オブジェクトの配列に CSV ファイルを読み込む必要があります。私はそれが1つにならなければならないことに気づかず、代わりにArrayListを作成しました。私は今それを修正する必要があり、私が何をしているのかわかりません。

これは、CSV ファイルを多次元配列に読み込むコードです。

public static void readClub() throws IOException {
        BufferedReader clubBR = new BufferedReader(new FileReader(new File("nrlclubs.txt")));
        String line = "";

        ArrayList<String[]> clubsArr = new ArrayList<String[]>(); 

        while ((line = clubBR.readLine()) != null) { 

            String[] club = new String[3]; 

            for (int i = 0; i < 3; i++) { 
                String[] value = line.split(",", 3);
                club[i] = value[i]; 
            }

            clubsArr.add(club); 
        }

私のCSVファイルのスニペットはこれです:

Glebe,G Shield,Glebe District
Cumberland,C Shield,Central Cumberland
Annandale,A Shield,Annandale District
University,Lion,Sydney Uni Rugby League Club
Souths,Rabbit,South Sydney,Rabbitohs
Easts,Rooster,Eastern Suburbs,Roosters,Sydney Roosters
Balmain,Tiger,Tigers,Balmain Tigers
Newtown,Jets,Jets,Newtown Jets,Bluebags

最初の単語はチーム名、2 番目の単語はチームのマスコット、残りは別名です。

問題は、オブジェクトの配列 (Clubs というクラス内) を使用して同じことを行うにはどうすればよいかということです。私はこれを機能させるために数時間を費やしましたが、間違っていると言われただけで、オブジェクトの配列が頭を悩ませています:'(

ありがとうございます!

編集: わかりました、実際の問題は次 のとおりです: プログラムは、データ ファイル (NRLclubs.txt) の内容をメモリ内の適切なオブジェクトの配列に読み込む必要があります (クラスの説明については、前のページを参照してください)。ファイルが存在すると想定しないでください。

クラスの説明は次のとおりです。 クラブ クラス: クラブ クラスは、競技会内の個々の NRL クラブを表します。Club クラスは、現在のクラブ名、現在のクラブのマスコット、クラブが知られている、または知られているエイリアスのデータを格納する必要があります。クラスに対して作成する必要がある通常のメソッド (コンストラクター、「セッター」、「ゲッター」など) と同様に、割り当て仕様の一般的な要件に基づいて、このクラスに適切なメソッドを決定する必要があります。

4

2 に答える 2

4

行のデータを保持する新しいクラスを作成します。最も簡単なケースでは、次のようなクラスを作成できます。

class MyClass {
     public String column1;
     public String column2;
     public ArrayList<String> aliases = new ArrayList<String>();

     public void addAliases(String[] a){
        for(int i=2;i<a.length;i++){
           aliases.add(a[i]);
        }
     }
}

次に、ArrayList を次のように変更します。ArrayList<MyClass> clubsArr = new ArrayList<MyClass>();

そしてあなたの読書部分は次のようになります:

while ((line = clubBR.readLine()) != null) { 

        MyClass club = new MyClass; 

        String[] value = line.split(",", 3);
        club.column1 = value[0]; 
        club.column2 = value[1]; 
        // etc...
        clubsArr.add(club); 

    }
    MyClass[] clubs = clubsArr.toArray();

.column2そうすれば、覚えておく必要のあるインデックスの代わりに、属性名 (この場合はたとえば ) を使用して、後でオブジェクトの 1 つから値を取得できるようになります。

クラス内の属性を好きなように呼び出すことができることに注意してください(たとえばclubname、の代わりにcolumn1

EDIT(OPの編集を支援するため) ファイルが存在するかどうかを確認するには、行を置き換えます BufferedReader clubBR = new BufferedReader(new FileReader(new File("nrlclubs.txt")));

File file = new File("nrlclubs.txt");
if(!file.exists()){
    System.exit(1); // no use to go any further if we have no input
}
BufferedReader clubBR = new BufferedReader(new FileReader(file));
于 2013-05-28T08:12:58.757 に答える
0

私はあなたの質問をよく理解していませんが、おそらくあなたはこれを探しています:

public static void readClub() throws IOException {
        BufferedReader clubBR = new BufferedReader(new FileReader(new File("nrlclubs.txt")));

    String line = "";

    ArrayList<Clubs> clubs = new ArrayList<Clubs>();

    while ((line = clubBR.readLine()) != null) { 

        Clubs club = new Clubs();

        String[] value = line.split(",", 3);
        club.name = value[0]; 
        club.mascot = value[1];
        club.alias = value[2];

        clubs.add(club); 
    }

}

于 2013-05-28T08:15:45.040 に答える