创建一个包含字段java

时间:2016-11-28 05:06:33

标签: java class

我正在尝试创建一个代表一个人姓名的类,其中包含代表名字,中间名和姓的字段(也有几种方法)。

当我尝试运行代码时,收到Illegal modifier for the local class Name; only abstract or final is permitted错误,无法找到解决此问题的方法。请帮我解决任何错误,以便我的代码执行所需(和评论)的任务。提前谢谢。

public class Name {

    String first_name;
    String middle_initial;
    String last_name;

    //constructor that accepts first name, middle initial, and last name as parameters and initializes the Name object's state with those values
    public Name(String first_name, String middle_initial, String last_name) {
        first_name = "John";
        middle_initial = "Q.";
        last_name = "Public";
    }

    //method to return the person's name in first name, middle initial, and last name order.
    public String getNormalOrder() {
        String name = first_name + " " + middle_initial + " " + last_name;
        return name;    
    }

    //method to return the person's name in reversed order: last name, first name, and middle name.
    public String getReverseOrder() {
        String name = last_name + ", " + first_name + " " + middle_initial;
        return name;
    }

    //method to return the full name in first, middle, last order, in String form
    public String toString() {
        return first_name + " " + middle_initial + " " + last_name;
    }

    public static void main(String[] arg){
        first_name = "John";
        middle_initial = "Q.";
        last_name = "Public";

        getNormalOrder();
        getReverseOrder();
        toString();
    }

}

1 个答案:

答案 0 :(得分:0)

我建议你重新开始使用Name.java文件。

从顶部开始,您只能拥有与其中包含的文件同名的public classpublic class Name { }

Name

现在,您的字段定义很好。

但是,构造函数不应对" John Q. Public"的值进行硬编码,因为此Name类可以表示 {{em>}的任何实例1}}。

因此,您需要使用this分配字段,这需要"限定"您正在使用哪个变量,因为它们是相同的变量名称。 (例如,如果您在此处将String first_name重命名为String fName,那么first_name = fName就可以了。

public Name(String first_name, String middle_initial, String last_name) {
    this.first_name = first_name;
    this.middle_initial = middle_initial;
    this.last_name = last_name;
}

然后,在main方法中,您想要创建此对象的实例。

Name name = new Name("John", "Q.", "Public");

那就是它。

但是如果你想显示这些值,那么简单地调用你的方法是不正确的,因为它需要知道哪个 Name值来调用方法。您还需要打印返回的String值,甚至可以看到它们。

System.out.println(name.getNormalOrder());
System.out.println(name); // calls name.toString()