0

我在从文本文件读取到数组列表时遇到问题。问题是我不知道如何读取多种类型,因为在我的数组列表中有点、字符串、布尔值,因此线拆分不起作用。我检查了所有主题,但没有找到解决方案。

编辑:Elrendezes 类看起来像

  class Elrendezes {
   protected Point Po;
   protected String hely;
   protected String foglalo;
   protected boolean foglalt;
  }

这是我的文件的样子:

 java.awt.Point[x=16,y=13], 1, name1, false

阅读方法是

public static ArrayList<Elrendezes> readDataFromFile(){
      ArrayList<Elrendezes> ElrList = new ArrayList<Elrendezes>();
      FileInputStream fstream = null;
      try
      {
          fstream = new FileInputStream("src/files/DataFile.txt");
          BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
          String strLine = null ;
          String tokens[] = strLine.split(", ");


          while ((strLine = br.readLine()) != null)   {
           tokens = strLine.split(", ");
          // THIS DOES NOT WORK: ElrList.add(new Elrendezes(tokens[0], tokens[1], tokens[2], tokens[3]));
          }
      }
      catch (IOException e) {
        e.printStackTrace();
      }
      finally {
          try { fstream.close(); } catch ( Exception ignore ) {}
      }
      return ElrList;

}
4

2 回答 2

1

由于您可能不知道正则表达式,我将使用:

  1. 获取xy

    int v1 = strLine.indexOf("x=");
    int v2 = strLine.indexOf(",y=");
    int v3 = strLine.indexOf("]")  ; 
    string x = strLine.substring(v1 +2, v2);
    string y = strLine.substring(v2 +3, v3);
    
  2. 其余的断点表示。

    string secondpart = strLine.substring(v3+1);
    
  3. 现在secondpart只使用逗号作为分隔符。
  4. 使用Integer.parseInt()等转换字符串表示形式。

  5. 构造你的对象。

注意:写的比较匆忙,检查x、y、secondpart使用的索引是否正确。我还假设输入是正确的。

于 2012-11-26T13:53:08.657 回答
0

我认为您必须选择一个字符来拆分字符串。

将拆分字符串转换为布尔值、整数等。

Elrendezes(String[] s){
Point Po = s[0]; // dont know how to cast string to point, never done before
hely = s[1];
foglalo = s[2];
foglalt = Boolean.parseBoolean(s[3]);
}
于 2012-11-26T13:57:21.703 回答