标识符预期错误(Java)

时间:2013-03-26 17:27:10

标签: java class compiler-errors identifier

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

我在第34-36行(在setter中)收到三个“预期标识符”错误。显然,这是一个菜鸟错误,但我似乎无法弄明白。任何帮助,将不胜感激。提前谢谢。

/******************************************************************
*     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);
    }
}

3 个答案:

答案 0 :(得分:4)

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

此外,您应该为setter方法提供带大括号{}的方法体,您可以在其中为实例变量指定参数值。

答案 1 :(得分: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;
}

答案 2 :(得分:0)

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

如果类是普通类,它既不是接口也不是抽象类,所以方法必须有正文,另一点是你需要提到变量类型lastName,firstName和birthday。

   public void setLastName(String lastName)
   {
       //method's body
   }