-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 等于第一行数组中的第 5 个元素,而 txt2 在第 2 行包含第 5 个元素的文本(您的评论说 3ed 元素,但代码是拉第五)。

这可以通过条件和计数器来实现。

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 回答