Rick
Rick

Reputation: 61

Why can't my class members access my getter methods?

I have these two files, personalinfo.java which defines the personalInfo class, and testpersonalinfo.java which tests the class. When I try to access my getter methods from testpersonalinfo.java I receive an error that these methods are undefined. Can anybody please tell me why?

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();

    }
}

Upvotes: 0

Views: 733

Answers (3)

Ramesh Papaganti
Ramesh Papaganti

Reputation: 7831

In case if you don't want to use getter method to access instance variable(Other than private variables) out side of the class defination, you can call instance variable-names directly on an instance object like

pers[i].name 

For more on variables access control please refer java-doc

Upvotes: 0

Vikrant Kashyap
Vikrant Kashyap

Reputation: 6846

in all your sysout statements you are trying to access getter without () this.

please try this

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

instead of

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

because getName() is a method not a Variable so always you need to use open-close braces () just after the method name (either you defining or calling) .

please change all these methods (methods which raise an compile-time Error).

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);

Upvotes: 0

dquijada
dquijada

Reputation: 1699

The getters are functions, not fields; so to call them you need to use () (like in: pers[i].getAdress().

Also, class names should be capitalized, but it's not really important (just makes it easier to read.

As someone suggested in a comment, you should use an IDE, in case you are not doing it. The IDE will point you to the obvious little mistakes (both errors and convention mistakes) like the ones above, and save you a long time. If you don't know where to get started for that, search Eclipse or Netbeans. (Eclipse is my personal favourite).

EDIT: I just saw Eran commented the answer to your error, so if he posts it as an answer accept his first.

Upvotes: 1

Related Questions