2014-02-23 67 views
1

可以有一個人,請幫助我我有這個代碼 的最後一部分編譯錯誤的說法創建構造請幫助這是寫這個<class name><object name> =新的構造函數名的正確方法嗎?

public class Officer { 

    public static void main(String args[]) { 

     Scanner input = new Scanner(System.in); 

     System.out.print("Enter the name of the Soldier: "); 

     String name = input.nextLine(); 

     System.out.print("Enter the sex of the Soldier: "); 

     String sex = input.nextLine(); 

     System.out.print("Enter the Age of the Soldier: "); 

     String age = input.nextLine(); 

     Soldier soldier = new Soldier(name, sex, age); 
    } 
} 

package officer; 

public class Soldier { 

    private String soldierName; 
    private int soldierAge; 
    private char soldierSex; 

    public void Soldier(String name, char sex, int age) { 
     soldierName = name; 
     soldierSex = sex; 
     soldierAge = age; 
    } 

    public String getSoldierName() { 
     return soldierName; 
    } 
    public char getSoldierSex() { 
     return soldierSex; 
    } 
    public int getSoldierAge() { 
     return soldierAge; 
    } 
} 
+2

你有一個構造函數來匹配'Soldier(name,sex,age)'嗎? – lakshman

+0

print stackTrace here !!!!! – Devavrata

+0

問題可能是,Soldier類中沒有任何構造函數,或像'Soldier(String name,String sex,int age)'' – iMBMT

回答

3

Soldier需要定義一個匹配的構造

public Soldier (String name, String sex, String age) { 
    // do stuff 
} 

這是什麼被執行的方法,何時你叫new Soldier(name, sex, age)

0

就OK了,除了:

  • 性應該是連接枚舉類型
  • 年齡應該是一個整數(或浮動)型
  • 你應該驗證用戶輸入

SEX枚舉:

public enum SEX { 
    MALE, FEMALE 
} 

構造函數:

public Soldier (String name, SEX sex, int age) { 

} 
+0

是的,我在我的其他班上打電話給士兵是否可以 – user3343348

0

你會需要這樣的東西:

public class Soldier { 

    public Soldier(String name, String sex, int age) { 

    } 
} 

編輯:用新的信息提供,你應該刪除public void Soldier因爲voidvoid將意味着public void Soldier是一種方法, class Soldier,而它應該是構造函數。

+0

請不要單個字符作爲parameternames;) – pL4Gu33

+0

因爲?我總是這樣做。 – WonderWorld

+0

變量的名字應該有一個好名字,你知道變量是什麼,它代表了它的意思。 :) – pL4Gu33

相關問題