2016-11-28 50 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() 
相關問題