有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

类标识符预期错误(Java)

我是编程新手,需要帮助。我创建了一个“Person”类和一个TestPerson文件来测试它(是的,这是一个赋值)

我在第34-36行(在setters中)得到三个错误“预期标识符”。显然,这是一个新手的错误,但我似乎无法理解。任何帮助都将不胜感激。提前谢谢

/******************************************************************
*     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) 个答案

  1. # 1 楼答案

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

    如果这个类是一个普通的类,它既不是接口也不是抽象类,所以一个方法必须有主体,另一点是你需要提到变量的类型lastName,firstName和birth

       public void setLastName(String lastName)
       {
           //method's body
       }
    
  2. # 2 楼答案

    显示错误是因为以下行:

    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;
    }
    
  3. # 3 楼答案

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

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