2017-01-27 9 views
0

私はPersonクラスと呼ばれるクラスを持っていますが、mainにPersonオブジェクトを追加する方法があります。mainからArrayListにオブジェクトを追加するには?

import java.util.*; 

public class Persons { 

public ArrayList<Person> personsList = new ArrayList<Person>(); 

    public boolean addPerson(Person newPerson) { 
     personsList.add(newPerson); 
     return true; 
    } 
} 

これが私の質問は、である私のメインの方法

import java.util.*; 

public class testPersons { 

public static void main(String[] args) { 

Persons persons = new Persons(); 

    Address person1Address = new Address(xxx, "xxx", "xxx", "CA", "xxx"); 
    Address person1JobAddress = new Address(1542, "High St", "Santa Cruz", "CA", "94063"); 
    ArrayList<String> person1Phone = new ArrayList<String>(); 
    person1Phone.add("xxx-xxx-xxx"); 
    Job person1Job = new Job("Teacher", 25000.00, person1JobAddress); 
    Person person1 = new Person("xxxxxxx", "San Mateo", 'M', person1Address, person1Job, person1Phone); 

    persons.addPerson(person1); 

    System.out.println(persons); 
    } 
} 

である「どのように私は人のクラスで私のArrayListにオブジェクトPersons1を追加しますか?」それはコンパイルされますが、私はそれを実行すると、私は奇妙な不器用な取得します。それは私のPersonsクラスで何かが不足しているのでしょうか、それとも私はArrayListのオブジェクトを印刷できませんか?

+0

オブジェクトを印刷すると、デフォルトでオブジェクトの 'hashCode()'が出力されます。オブジェクトをループしてそのオブジェクトに含まれるすべてのオブジェクトを印刷するには、そのためのコードを記述する必要があります。 –

+0

'Persons'の「デフォルト」の結果を表示します。一般的な提案は 'toString'をオーバーライドすることです、個人的にはこれは悪い考えです、' toString'はデバッグ用に予約する必要があります。あなたの場合、代わりに 'personsList'を反復することができます – MadProgrammer

+0

' toString() 'はデバッグ用に予約する必要がありますか? –

答えて

0

Personのすべての関連クラスがPersonなどのデフォルトのtoString()をオーバーライドしていることを確認してください。

あなたのSystem.out.println(人が)、これが起こる:

  • あなたのArrayList内Personオブジェクトが一つ一つと呼ばれています。
  • Personオブジェクトごとに、そのtoString()が呼び出されます。 toString()がオーバーライドされていない場合、Object(デフォルト)toStringが呼び出されます。したがって、 "奇妙なばかげた"。 Javaに、どのような "プレゼンテーション"を表示するかを指定する必要があります。toString()
関連する問題