0

我是编程新手,可以伸出援助之手。我创建了一个“Person”类和一个 TestPerson 文件来测试它(是的,这是一个作业。)

我在第 34-36 行(在设置器中)收到三个错误“预期标识符”。显然,这是一个新手错误,但我似乎无法弄清楚。任何帮助,将不胜感激。提前致谢。

/******************************************************************
*     program name:      Person.java
*     author:           Nichol Albertson
*     remarks:          describes a Person object
      Date:             3/26/13
********************************************************************/
import java.text.*;

class Person {
    /**********************************************
     *  Local Variables
     ******************************************/
    private String lastName;
    private String firstName;
    private String birthday;

    /**********************************
        *   constructors - just a method
        ***********************************/

    public Person(String lastName, String firstName) {
        setLastName();
        setFirstName();
        setBirthday();
    }

    public Person(String lastName, String firstName, String birthday) {
        initialize(lastName, firstName, birthday);
    }

    /**********************************
    *   set methods  (setters)
    ***********************************/
    public void setLastName(lastName);
    public void setFirstName(firstName);
    public void setBirthday(birthday);

    /**********************************
    *   get methods  (getters)
    ***********************************/
    public String getLastName() {
        return lastName;
    }

    public String getFirstName() {
        return firstName;
    }

    public String getBirthday() {
        return birthday;
    }

    /*******************************
    * other methods
    ********************************/
    public String getFirstLast() {
        System.out.println(firstName + " " + lastName);
    }

    public String getLastFirst() {
        System.out.println(lastName + ", " + firstName);
    }
}
4

3 回答 3

4

您需要为每个 setter 方法中的参数提供一个类型。该类型应与您尝试设置的实例变量的类型相匹配。

此外,您应该为您的 setter 方法提供一个带大括号的方法体{}在其中将参数值分配给您的实例变量。

于 2013-03-26T17:29:04.870 回答
1

由于以下几行而显示错误:

public void setLastName(lastName);
public void setFirstName(firstName);
public void setBirthday(birthday);

Person既不是abstract class也不是interface。确实是concrete class这样。你不能只在concrete类中声明方法。您还必须提供方法体。这可以通过这种方式进行更改:

public void setLastName(String lastName){ this.lastName = lastName;}
public void setFirstName(String firstName){ this.firstName = firstName;}
public void setBirthday(String birthday){ this.birthday = birthday;}

此外,以下方法定义完全错误:

public String getFirstLast() {
    System.out.println(firstName + " " + lastName);
}

public String getLastFirst() {
    System.out.println(lastName + ", " + firstName);
}

上述两种方法都有返回类型String,但您没有返回任何内容。这也是您的代码中的错误。它们应定义如下:

public String getFirstLast() {
    return firstName + " " + lastName;
}

public String getLastFirst() {
    return lastName + ", " + firstName;
}
于 2013-03-26T17:29:53.160 回答
0
public void setLastName(lastName);
public void setFirstName(firstName);
public void setBirthday(birthday);

如果类是普通类,既不是接口也不是抽象类,所以方法必须有body,另外需要提到变量lastName、firstName和birthday的类型。

   public void setLastName(String lastName)
   {
       //method's body
   }
于 2013-03-26T17:32:47.850 回答