如何使用getter和setter调试java代码?

时间:2014-03-19 09:37:50

标签: java eclipse debugging junit

我被赋予了一个空类,并指示用实体变量和方法填充它,这些实体变量和方法设置或从实例变量中获取值。然后我打开另一个java文件,其中提供了创建新Contact对象的代码,并指示添加使用该对象的其他代码来测试在Contact类中创建的所有方法。

我正在使用Eclipse程序进行编码/测试。唯一正确的是我的方法标题。当我用我所写的内容(下面)进行测试时,我得到一个null,null响应(就是当我删除写有关setPhoneNumber的内容时。当它包含在内时我得到一个更糟糕的错误

  

线程“main”中的异常java.lang.Error:未解析的编译   问题:无法将phoneNumber解析为变量。)

非常感谢有关获取/设置方法的任何帮助。 我对任何编程都是全新的,并且已经查看过几十个示例,并尝试了很多变化而没有成功。

public class Contact
{
//Instance Variables
private String firstName;
private String lastName;
private int phoneNumber;

public String getFirstName()  //method to retrieve first name 
    {
        return this.firstName;
    }
public void setFirstName(String firstName)  //method to set the first name
    {
        this.firstName = firstName;
    }
public String getLastName()
    {
        return lastName;
    }
public void setLastName(String lastName)
    {
        this.lastName = lastName;
    }
public int getPhoneNumber()
    {
        return this.phoneNumber;
    }
public void setPhoneNumber(int phoneNumber)
    {
        this.phoneNumber = phoneNumber;
    }
public void call()
    {
    System.out.printf(getFirstName(), getLastName(), getPhoneNumber());
    }
}

以下是用于测试上述Contact类的其他java文件:

    public class ContactTestDriver
{
public static void main(String[] args)
    {
    Contact contact = new Contact();  

    //all above was given; below are my code additions
    String myContact;
    myContact = contact.getFirstName();
    contact.setFirstName();
    System.out.println(myContact);

    myContact = contact.getLastName();
    contact.setLastName();
    System.out.println(myContact);

    int myNumber;
    myNumber = contact.getPhoneNumber();
    contact.setPhoneNumber(phoneNumber);
    System.out.println(myNumber);

    }
}

经过一些有用的评论后,我做了一些改变,但仍然没有成功。我的错误是“myContact无法解析为变量”

以下是修订后的代码:     公共课联系     {     //实例变量     private String firstName;     private String lastName;     private int phoneNumber;

public void setFirstName(String firstName)  //method to set the first name
    {
        this.firstName = firstName;
    }   
public String getFirstName()  //method to retrieve first name 
    {
        return this.firstName;
    }
public void setLastName(String lastName)
    {
        this.lastName = lastName;
    }   
public String getLastName()
    {
        return lastName;
    }
public void setPhoneNumber(int phoneNumber)
    {
        this.phoneNumber = phoneNumber;
    }
public int getPhoneNumber()
    {
        return this.phoneNumber;
    }

public void call()
    {
    System.out.printf("Who to call ", getFirstName(), getLastName(), getPhoneNumber());
    }
}

这是测试Contact类的代码:

public class ContactTestDriver
{
public static void main(String[] args)
    {
    Contact contact = new Contact();  

    //all above was given; below are my code additions
    String firstName = "a"; //define first name
    contact.setFirstName(firstName);  //then set it
    myContact = contact.getFirstName();  //then get it
    System.out.println(myContact);

    String lastName;
    contact.setLastName(lastName);
    myContact = contact.getLastName();
    System.out.println(myContact);

    int myNumber = 123;
    contact.setPhoneNumber(phonNumber);
    myNumber = contact.getPhoneNumer();
    System.out.println(myNumber);

    }
}

5 个答案:

答案 0 :(得分:0)

当您调用带有String parametar的contact.setFirstName();时,您没有传递名字

public void setFirstName(String firstName){...}

以及contact.setLastName();:这也需要发送参数

像这样:

String lastName="//last name";
contact.setLastName(lastName);

你需要知道我们在getter方法之前使用setter方法

首先设置名称,然后获取


    String firstName = "a";////define the first name
    contact.setFirstName(firstName); //// then set it 
    myContact = contact.getFirstName(); /// then get it
    System.out.println(myContact);

    String lastName = "b";
    contact.setLastName(lastName);
    myContact = contact.getLastName();
    System.out.println(myContact);

    int myNumber = 123;
    contact.setPhoneNumber(myNumber);
    myNumber = contact.getPhoneNumber();
    System.out.println(myNumber);

答案 1 :(得分:0)

这就是你所拥有的:

myContact = contact.getFirstName();
contact.setFirstName();

首先,你正在设置,然后你正在设置。扭转它们更有意义:

contact.setFirstName();
myContact = contact.getFirstName();

此外,像setFirstName这样的set方法应该接收一个String参数:

contact.setFirstName("Johny");

答案 2 :(得分:0)

您可以使用Eclipse调试工具。在调试模式下运行java类,并在需要分析数据的地方添加断点。

答案 3 :(得分:0)

getter只是一个获取字段的方法,而setter正在设置一个新字段。  你必须先设定一些值,即

int myNumber;
myNumber = contact.getPhoneNumber();
contact.setPhoneNumber(phoneNumber);
System.out.println(myNumber);

int myNumber= "983445556"; // here you are creating an instance 

或者你可以通过

来完成
 contact.setPhoneNumber(32435435345);

类似于休息案例

答案 4 :(得分:0)

此处,phoneNumber不是main方法

中定义的变量
int myNumber;
myNumber = contact.getPhoneNumber();
contact.setPhoneNumber(phoneNumber);

应该定义。