-3

コンマ区切りファイルから読み取り、内容を配列に分割しています。これを while ループで実行しているので、ファイルの最後の行が配列の内容を上書きしてしまうため、配列に動的に別の名前を付けたいと思います。以下は、関連するコードの一部です。

  TextView txt1;
  TextView txt2;

  Scanner in = new Scanner(result);
  in.nextLine(); //skip first line

  while(in.hasNextLine()){
    String line = in.nextLine();
    String []dataset = line.split(",");//store values in array

    txt1.setText(dataset[4]);//Should be 5th element of first line
    txt2.setText(dataset[4]);//Should be 5th element of second line
  }

上記のコードからわかるように、ファイルの最初の行で txt1 の値を val に設定し、同様に txt2 に設定します。HashMaps または Maps または ArrayList が役立つと読みましたが、これを達成する方法がわかりません。

4

3 に答える 3

3

データセット配列をリストに追加する必要があります。したがって、 while ループの前に:

List datalist = new ArrayList();

後で:

String []dataset = line.split(",");//store values in array

追加:

datalist.add(dataset);
于 2012-06-02T17:01:37.127 に答える
3

あなたが正しくやりたいことを理解していれば、txt1を1行目の配列の5番目の要素と等しくし、txt2を2行目の5番目の要素のテキストにする必要があります(コメントには3ed要素と書かれていますが、コードは5番目を引く)。

これは、条件とカウンターを使用して実現できます。

Scanner in = new Scanner(result);
   in.nextLine(); //skip first line
   int count = 0;
   while(in.hasNextLine()){

      String line = in.nextLine();
      String []dataset = line.split(",");//store values in array
      if (count == 0){
          txt1.setText(dataset[4]);//Should be 3 element of first line
      }else if (count ==1){
          txt2.setText(dataset[4]);//Should be 3 element of second line
      }
    count++;
   }
  }

編集:

配列の配列が必要であることがわかったので、セットアップは簡単です。事前に処理しているデータの量がわからない場合は、外側の配列を可変にする必要があります。

ArrayList<String[]> dataSet = new ArrayList(10000)//number should be a guess at the amount of data
Scanner in = new Scanner(result);
   in.nextLine(); //skip first line
   while(in.hasNextLine()){

      String line = in.nextLine();
      String []dataset = line.split(",");//store values in array
      dataSet.add(dataset);
   }
   txt1.setText(dataSet.get(0)[4]);
   txt2.setText(dataSet.get(1)[4]);
  }

必要に応じて、これらのテキスト ラベルを作成し、同様の方法でハンドルを保存して、テキストを設定することもできます。

于 2012-06-02T17:05:59.070 に答える
0

マイケルの投稿にコメントしようと思ったのですが、余裕がありません! 入力から任意の数の行が予想され、それらをループの外で処理したい場合は、Michael のアプローチと私のアプローチを組み合わせて、次のようにすることができます。

   Scanner in = new Scanner(result);
   in.nextLine(); //skip first line

   List txtList = new ArrayList(); //create list

   while(in.hasNextLine()) {
     String line = in.nextLine();
     String[] dataset = line.split(","); //store values in array

     Text txt1 = new Text(); //assuming txt1 is an instance of "Text"
     txt1.setText(dataset[4]); //Should be 5th element of first line

     txtList.add(txt1); //add 5th element of each line to list
   }

   /*
    * txtList now contains instance of Text containing the 5th value from each
    * line of input
    */
于 2012-06-02T17:28:25.310 に答える