2016-06-16 10 views
0

私は別のクラスで作成した変数numFriendsを呼び出そうとしていますが、そうしようとすると「numFriendsを変数に解決できません」と表示されます。この変数は、新しい友人が追加されるたびに増分され、そのクラスをTestクラスに表示したいとします。ここに私のコードは次のとおりです。Javaの別のクラスの変数にアクセスできませんか?

CLASS ONE

public class Person { 

    private String fullName; 
    private char gender; 
    private int age; 

    public static int numFriends = 0; 

    public Person(String nm, char gen, int a) { 
     fullName = nm; 
     gender = gen; 
     age = a; 
     numFriends++; 
    } 

    public void setName(String nm) { 
     fullName = nm; 
    } 

    public void setAge(int a) { 
     age = a; 
    } 

    public int getAge() { 
     return age; 
    } 

    public void setGender(char g) { 
     gender = g; 
    } 

    public String toString() { 
     return (fullName + ", gender = " + gender + ", age = " + age); 
    } 

} 

CLASS TWO(実行ファイル)

public class TestPerson { 

    public static void main(String[] args) { 

     System.out.println(numFriends + " people at first"); 

     Person p1 = new Person("Otto Mattik", 'M', 22); 
     p1.setName("Otto Mattik"); 
     p1.setGender('M'); 
     p1.setAge(22); 
     System.out.println("Person Full Name = " + p1); 

     Person p2 = new Person("Anna Bollick", 'F', 19); 
     p2.setName("Anna Bollick"); 
     p2.setGender('F'); 
     p2.setAge(19); 
     System.out.println("Person Full Name = " + p2); 


     Person p3 = new Person("Dick Tator", 'M', 33); 
     p3.setName("Dick Tator"); 
     p3.setGender('M'); 
     p3.setAge(33); 
     System.out.println("Person Full Name = " + p3); 

     changeName(p2, "Anna Bollik-Mattik"); 

     Person[] people = { 
       p1, p2, p3 
     }; 

     agePersons(people, 5); 

     System.out.println("\n" + numFriends + " people after 5 years"); 

     for (Person person : people) 
      System.out.println("Person fullName: " + person); 

    } 

    public static void changeName(Person p, String name) { 
     p.setName(name); 
    } 

    public static void agePersons(Person[] people, int years) { 
     for (Person person : people) 
      person.setAge(person.getAge() + years); 
    } 
} 
+1

「Person.numFriends」を試してください。また、 'numFriends'をprivateにして静的getter/setterを' Person'クラスに追加することも考えられます。 – Zircon

+0

将来、[**最小**、完全、および検証可能な例](http://stackoverflow.com/help/mcve)を作成してみてください。関連する行は2行しかありませんが、Ctrl + Fキーを使用してコード内で検索する必要がありました。 – 4castle

+2

私はそれぞれが自分のnumFriendsフィールドと値を持っている必要があるので、numFriendsは静的でなければならないとは思っていません。あなたは1)あなたのプログラム設計を再考する可能性があり、2)Javaの本を開くことが必要です。なぜなら、この質問は非常に基本的なJavaであり、あなたのテキストやチュートリアルを読むことによって最もよく習得されます。 –

答えて

3

あなたはPerson.numFriendsを言う必要があります。これは、numFriendsがPersonクラスの静的メンバーであるため、numFriendsを参照するためにPersonクラスを使用する必要があるためです。

+1

ありがとう、これは働いた。これで新しいので、皆さんの助けを借りて本当に感謝しています。 – AvenNova

関連する問題