2014-10-27 104 views
0

早上好,我使用以下構造函數代碼,出於某種原因,每當創建新對象時,「position」變量都設置爲null。字符串更改爲空

這是我的類代碼

public class Employee 
{ 
    private String name; 
    private int idNumber; 
    private String department; 
    private String position; 

    public Employee(String nam, String depart, String posi, int id) 
    { 
     name = nam; 
     department = depart; 
     posi = position; 
     idNumber = id;  
    } 
} 

這是我用來創建對象的線。

Employee sMeyers = new Employee("Susan Meyers", "Accounting", "Vice President", 47899); 

回答

1

應該

position = posi;

,而不是

posi = position;

你在這裏分配給空變量(position),以一個不變的參數(posi)。

0

對於您的構造函數參數posi,您希望獲取該值並將其分配給在此示例中爲position的其中一個類字段。現在,你在做的是將position(這是空)分配給posi。所以你用null覆蓋了你的參數,並沒有對它做任何事情。

你想要做的是以下幾點:

position = posi; 

其構造函數的參數,即"Vice President分配給類字段position

記住右側的變量分配給左側的變量。

0

那是因爲你這句話的:

posi = position; 

將其更改爲

position =posi; 

使用 「this」 指針,以避免這些錯誤。快樂編碼!

1

其他的答案已經指出,你的錯誤是

posi = position 

Luiggi門多薩也作出了評論,指出你應該使用「本」!

我只是想給你一個完整的例子,說明它應該如何完成。

public class Employee 
{ 
    private String name; 
    private int idNumber; 
    private String department; 
    private String position; 

    public Employee(String name, String department, String position, int idNumber) 
    { 
     this.name = name; 
     this.department = department; 
     this.position = position; 
     this.idNumber = idNumber;  
    } 
} 

通過顯式訪問您的類變量還可以省去構成像「nam」和「pos」這樣的新變量名的麻煩。