2017-12-19 3 views
-4

これは、アドレス帳プロジェクトのコードスニペットです。私はテキストファイルからテキストをロードしたいが、作成したクラスを文字列に変換することができず、スキャン方法がわからないので、私は立ち往生している。テキストファイルからテキストをロードする(初心者はこちら)java

私はどのように2つの文字列を読み込むことができますか?例えば、文字列firstnameとString familyname? (編集)編集したので、欠落していたメソッドとクラスを追加しました。

class Person { 
    int id; 
    String firstname; 
    String familyname; 

    Person(int id, String firstname, String familyname) { 
    this.id = id; 
    this.firstname = firstname; 
    this.familyname = familyname; 
    } 

    public void setId(int id) { 
    this.id = id; 
    } 

    public void setFirstname(String firstname) { 
    this.firstname = firstname; 
    } 

    public void setFamilyname(String familyname) { 
    this.familyname = familyname; 
    } 

    public int getId() { 
    return this.id; 
    } 

    public String getFirstname() { 
    return this.firstname; 
    } 

    public String getFamilyname() { 
    return this.familyname; 
    } 
} 

class AddressBook { 
    ArrayList<Person> addresses = new ArrayList<Person>(); 

    int id = 0; 

    AddressBook() { 
    load(); 

    public void add(String firstName, String familyName) { 
    Person person = new Person(++id, firstName, familyName); 
    addresses.add(person); 
    } 

    public void load() { 
    try { 
     File file = new File("AddressBook.txt"); 
     Scanner scanner = new Scanner(file); 
     Person person; 
     while (scanner.hasNextLine()) { 
     person = scanner.nextLine(); 
     add(person.getFirstname(),person.getFamilyname()); 
     } 
    } catch (IOException e) { 
     System.out.println("Error in input/output"); 
    } 
    } 

    public void save() { 
    try { 
     PrintWriter writer = new PrintWriter("AddressBook.txt", "UTF-8"); 
     for (Person person: addresses) { 
     writer.println(person.getFirstname()+" "+person.getFamilyname()); 
     } 
     writer.close();   
    } catch (IOException e) { 
     System.out.println("Error in input/output");  
    } 
    } 
} 
+0

string.split( "")を使用します。あなたのコードが構築される方法は決してうまくいかないでしょう。 nextLine()は文字列を返しますが、Person – Stultuske

+0

のインスタンスに割り当てようとすると、コードスニペットにテンプレートを追加する必要があります。データをファイル "AddressBook.txt"に保存して分割する方法を知っているはずです各行の異なるフィールド... – mlwn

+0

'add'も手続きがありません。' Person'をどこに追加しますか? – mlwn

答えて

0

このスニペットを試してください。ファイルから行を取得し、スペースを使用して分割して使用します。

public void load() { 
     try { 
      File file = new File("AddressBook.txt"); 
      Scanner scanner = new Scanner(file); 
      Person person; 
      while (scanner.hasNextLine()) { 
       String[] split = scanner.nextLine().split(" "); 
       add(split[0], split[1]); 
      } 
     } catch (IOException e) { 
      System.out.println("Error in input/output"); 
     } 
    } 
+0

ありがとうございました – bob

+0

なぜあなたが更新を行ったのか、なぜ 'person = scanner.nextLine()'がコンパイルされないのかを説明するためです。なぜあなたは '分割されたのですか... – AxelH

関連する問題