2016-04-18 17 views
0

私は、personalInfoクラスを定義するpersonalinfo.javaとクラスをテストするtestpersonalinfo.javaの2つのファイルを持っています。 testpersonalinfo.javaからgetterメソッドにアクセスしようとすると、これらのメソッドが定義されていないというエラーが表示されます。誰でも私に教えてもらえますか?私のクラスメンバーが私のゲッターメソッドにアクセスできないのはなぜですか?

personalinfo.java:

public class personalInfo { 

    private String name; 
    private String address; 
    private int age; 
    private long phoneNumber; 

    personalInfo(){ 
     name = "Default Name"; 
     address = "Default Address"; 
     age = 100; 
     phoneNumber = 0000000000; 
    } 

    personalInfo(String nam, String add, int ag, int phone){ 
     name = nam; 
     address = add; 
     age = ag; 
     phoneNumber = phone; 
    } 

    public String getName(){ 
     return name; 
    } 
    public String getAddress(){ 
     return address; 
    } 
    public int getAge(){ 
     return age; 
    } 
    public long getPhoneNumber(){ 
     return phoneNumber; 
    } 

    public void setName(String nam){ 
     this.name = nam; 
    } 
    public void setAddress(String add){ 
     this.address = add; 
    } 
    public void setAge(int ag){ 
     this.age = ag; 
    } 
    public void setPhoneNumber(long phone){ 
     this.phoneNumber = phone; 
    } 
} 

testpersonalinfo.java:

import java.util.Scanner; 

public class personalInfoExample { 

    public static void main(String[] args){ 

     personalInfo[] pers = new personalInfo[3]; 
     Scanner input = new Scanner(System.in); 

     String inName; 
     String inAddress; 
     int inAge; 
     long inPhoneNumber; 

     for(int i=0; i<3; i++){ 
      pers[i] = new personalInfo(); 
      System.out.printf("Please input the name for person %s: ", i); 
      inName = input.nextLine(); 
      pers[i].setName(inName); 
      System.out.println(pers[i].getName); 
      System.out.printf("Please input the address for person %s: ", i); 
      inAddress = input.nextLine(); 
      pers[i].setAddress(inAddress); 
      System.out.println(pers[i].getAddress); 
      System.out.printf("Please input the age for person %d: ", i); 
      inAge = input.nextInt(); 
      pers[i].setAge(inAge); 
      input.nextLine(); 
      System.out.println(pers[i].getAge); 
      System.out.printf("Please input the phone number for person %d, without dashes included (ex. 1112223333): ", i); 
      inPhoneNumber = input.nextLong(); 
      pers[i].setPhoneNumber(inPhoneNumber); 
      System.out.println(pers[i].getPhoneNumber); 
      input.nextLine(); 
     } 

    input.close(); 

    } 
} 
+1

がどのようにこれらのクラスを構築している参照してください?あなたがJavaに慣れていない限り、私はIDEを使用することをお勧めします。これは長期的にあなたに多くの時間を節約するためです。 –

+4

'pers [i] .getPhoneNumber' - >' pers [i] .getPhoneNumber() '... – Eran

+1

@Eran - それは答えです。私はそれをアップヴォートできるようにしたいと思います。 –

答えて

1

ゲッターは機能しないフィールドです。また

は、クラス名は大文字でなければならない pers[i].getAdress()が、それはちょうどそれが読みやすくすることができます(実際には重要ではありません

誰かがコメントで示唆したように:あなたが中のような(()を使用する必要があり、それらを呼び出します。あなたがそれをやっていない場合に備えて、IDEを使うべきです。IDEは、上記のような小さな間違い(エラーと大会の間違いの両方)をあなたに指摘し、あなたに長い時間をかけません。どこでそれを始めるべきか、検索EclipseまたはNetbeans(Eclipseは私の個人的なお気に入りです)

編集:私はちょうどEranがあなたのエラーへの答えをコメントしています。

0

getter()なしでアクセスしようとしている文中のすべてsysoutにあります。

getName()が方法ではない変数であるため、これは常にあなただけのメソッド名 後に開閉括弧()を使用する必要があり、この

System.out.println(pers[i].getName()); //change all your getters 

代わりの

System.out.println(pers[i].getName); 

を試してみてくださいあなたが定義しているか電話しているか)

これらのすべてのメソッド(コンパイル時エラーを発生させるメソッド)を変更してください。

場合
System.out.println(pers[i].getName); 
System.out.println(pers[i].getAddress); //all these lines are causing of Compile time error. 
System.out.println(pers[i].getAge); 
System.out.println(pers[i].getPhoneNumber); 
0

あなたはインスタンス変数にアクセスするためのgetterメソッドを使用しない場合(プライベート変数以外)アウトclass definationの側には、上の直接インスタンス変数-名を呼び出すことができます変数のアクセス制御の詳細について

pers[i].name 

のようなインスタンスオブジェクトは、java-doc

関連する問題