2016-05-03 11 views
0

を移入私はID、名前、住所、状態インスタンス変数をPersonクラスを持っているオープンtxtファイルとArrayListの

  • IDにはセッター(ミューテータ)メソッド
  • 名、住所、状態を持っていませんインスタンス変数は、カンマが並んで読んで、私はJFileChooserのを使用してtxtファイルを開き、人クラス型のArrayListをpupulateしたい

を区切られているからで読み取るために、両方のsetterメソッドとgetterメソッド -The txtファイルを持っています。私はPersonオブジェクトここ にIDでの読み取りを設定するために積み重ねられます しても、セッターがない場合は、IDを設定することはできません

+0

をすることができます好きですあなたのPersonクラスをここに入れますか?なぜ、そのPersonクラスをそのクラスとして使用したいのですか? –

+0

PersonクラスにIDを受け取るコンストラクタがありますか?おそらくPersonクラスと、あなたが得ているスタックトレースを表示するべきです。 – billjamesdev

+0

setID()とgetIDをpersonクラスに追加します – Assen

答えて

0

ArrayListの

public static ArrayList<Person> load(String fileName) throws IOException { 
    ArrayList<person> lines = null; 
    BufferedReader reader; 
    try { 
     JFileChooser chooser = new JFileChooser(); 
     chooser.setDialogTitle("Load which file?"); 
     int result = chooser.showOpenDialog(null); 
     if (result == JFileChooser.APPROVE_OPTION) { 
      File file = chooser.getSelectedFile(); 
      if (file != null) { 
       fileName = file.getCanonicalPath(); 
       reader 
         = new BufferedReader(new FileReader(fileName)); 
       lines = new ArrayList<>(); 

       String line = reader.readLine(); 
       String data[]; 
       while ((line = reader.readLine()) != null) { 
        data = line.split(","); 
        Person s = new Person(); 


        s.setName(data[0]); 
        s.setAddress(data[1]); 
        s.setState(data[2]); 

        //I got stack how to set ID bcs it has no set method 

        s.getAddress();         
        s.getName(); 
        s.getState(); 

        lines.addAll(Arrays.asList(s)); 
       } 
       reader.close(); 
       return lines; 
      } 
     } 

    } catch (FileNotFoundException exp) { 
     exp.printStackTrace(); 
    } catch (IOException exp) { 
     exp.printStackTrace(); 
    } 
    return lines; 
} 

}を読み込むとpoupulateする方法であり、またはコンストラクタにはIDが必要です。また、なぜあなたはsとして

lines.addAll(Arrays.asList(s)); 

Personの対象で使用している、あなたは、単にリストに人物オブジェクトを追加するlines.add(s);を呼び出すことができます。

1

あなたは、あなたがあなたのメソッド内で、その後のような

public Person(int id){ 
    this.id = id; 
} 

の下クラスのコンストラクタをオーバーロードすることができ、あなたはそれを割り当てた後にIDを変更したくないことを決定した場合は

data = line.split(","); 
Person s = new Person(whatever_if_you_wanana_set);