2

2 つのファイルからデータを正常に抽出し、それぞれのクラスの配列オブジェクトに格納しました。これは、配列オブジェクトに保存したデータの一部です。

2005,Arsenal,ManU,Arsenal,WestHam,Y,2,3,40000
2006,ManU,Chelsea,ManU,WestHam,N
2007,ManU,Arsenal,ManU,WestHam,Y,1,0,260000
2008,Chelsea,ManU,Chelsea,Swansea,Y,4,0,285630
2009,Chelsea,ManCity,Chelsea,Swansea,N

各コンマは異なる列を表します。これは、それを保存するための私のコードです:

try{ 
Scanner kd = new Scanner(file);
    while(kd.hasNext()){
        String data = kd.nextLine();
        String [] values = data.split(",");
        String year = values[0];
        String wScore = "N/A" , lScore = "N/A", crowd = "N/A";

        if(inputYears.equals(year))
        {
        g.setPremier(values[1]);
        g.setLosing(values[2]);

一部のユーザーの提案どおりに実行しましたが、唯一の問題は、勝者が空白になることです。例:

    Year: 2005
    Premier: 

そのはず:

    Premier: Arsenal

とにかく私はそれを修正できますか?

4

4 に答える 4

1

ユーザーが年のみでクエリを実行する場合は、キーとしてマップを作成する必要があります。

初期段階で、次のようなことを試してください。

Map<String, ArrayList<String>> map= new HashMap<String, ArrayList<String>>();

while(kd.hasNext()){
    String data = kd.nextLine();
    String [] values = data.split(",");
    String year = values[0];
    String premiers = values[1];
    //String otherStuff= values[2]; and so on

    ArrayList<String> temp= new ArrayList<String>();
    temp.add(premiers);

    //temp.add(otherStuff);
    map.put(year, temp);
}

後で、次のようにクエリできます。

ArrayList<String> values= map.get(userInputYear);
String winner= values.get(0);
于 2013-05-29T16:08:56.563 に答える
0

を使用しMapます。1 行に 1 年しかない場合はHashMap<String, String>、年をキーに、チームを値として a を使用します。

同じ年の行が多数ある場合は、HashMap<String, ArrayList<String>>キーとして年を指定し、値として team* s * を使用します。

後者の場合、値が初期化されていることを確認する必要があります。そうでない場合は、初期化して現在のチームを追加します。すでに初期化されている場合は、年ごとに値を取得し、現在のチームを追加します。

ユーザー入力を取得したら、Mapのキーセットを照会できます...

  • ユーザー入力が含まれていることを確認し、含まれている場合は...
  • チームを表示する/その年にリストされているすべてのチームを列挙する
于 2013-05-29T16:10:46.237 に答える
0

データのレコードを表すクラスを作成できます

class Data
{ 
    private String year;
    private String winner;

    ...

    Data(String year, String winner) { ... }
}

次に、年を検索するのを少し簡単にするデータに年を関連付けるマップを埋めることができます。

Map<String, Data> m = new HashMap<String, Data>();

while(kd.hasNext())
{
    String[] arr = kd.nextLine().split(",");

    Data d = new Data(arr[0], arr[1])

    m.put(arr[0], d);
}

List<Data>しかし、やなどがあったとしても、次のData[]ようなことができます

for (Data d : listOfData)
{
    if (d.getYear().equals(yearToFind)) return d;
}

年を見つける

于 2013-05-29T16:17:48.210 に答える