2016-11-28 24 views
0

我试图创建一个代表一个人姓名的类,该字段具有代表名字,中间名字和姓氏(也有几种方法)的字段。创建一个包含字段的类java

当我尝试运行我的代码时,收到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(); 
    } 

} 
+0

为什么它是一个本地类,其余的代码在哪里?旁注:您的构造函数不会将字段初始化为传递的参数。 – Li357

+0

我是新来的,我没有学到任何其他方式(非本地方式)创建一个类。我如何让我的构造函数初始化传递的参数? – anonym

+0

发布您的主要功能。 –

回答

0

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

从顶部开始,您只能拥有一个与其包含的文件同名的public class

public class Name { 

} 

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

的构造,但是,不应硬编码“约翰问:公共”的值,因为这Name类可以代表Name任何实例。

因此,您需要使用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值调用方法。您还需要打印返回的字符串值,甚至可以看到它们。

System.out.println(name.getNormalOrder()); 
System.out.println(name); // calls name.toString() 
相关问题