0

テキストファイルから配列リストへの読み取りに問題があります。問題は、複数のタイプを読み取る方法がわからないことです。これは、配列リストにポイント、文字列、ブール値が含まれているため、linesplitが機能しないためです。私はすべてのトピックをチェックしましたが、これに対する解決策は見つかりませんでした。

編集: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. 取得xしてy

    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、および2番目の部分に使用されているインデックスが正しいかどうかを確認してください。また、入力が正しいと仮定しました。

于 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 に答える