2017-05-08 87 views
1

我有兩個類:如何爲每個課程實例分配一個唯一的序列號?


public class Worker{ 

    String name; 

    private static int count=0; 

    public Worker(String N){ 

    name=N; 
    count++; 
    } 

    public String numberOfTime(){ 
     return name +", "+ count; 
    } 
} 

public class counting{ 

    public static void main(String[]args){ 
     Worker worker1 = new Worker("Jack"); 

     Worker worker2 = new Worker("John"); 

     System.out.println(worker1.numberOfTime()); 

     System.out.println(worker2.numberOfTime()); 
    } 
} 

雖然我想(傑克,1)和(約翰,2)等,它打印(傑克,2)和(John,2)。

任何人都可以解釋我如何改變這個?

謝謝。

+4

靜態變量屬於類對象,而不是實例。 – Maroun

+0

爲什麼「約翰2」?它只被稱爲「約翰」的一次 – Jens

+1

我想給每個工人一個號碼。第一名工人是第一名,而最後一名將是第n名。不過,它給了我調用方法的時間(總是我)。 –

回答

3
public class Worker{ 

    String name; 
    int number; 

    private static int totalCount=0; 


    public Worker(String N){ 

    name=N; 
    totalCount++; 
    number = totalCount; 
    } 

    public String numberOfTime(){ 
     return name +", "+ number; 
    } 
} 

如果你想一個ID設置爲每個勞工試試這個

您還沒有分配號碼的情況下,他們的總數應該從分配給每個實例

+0

錯字:)開始,修正它 –

+1

您可以將數字聲明爲'int number = totalCount ++;' – AxelH

+0

您是對的!這使得它更短 –

0

數分開,你應該這樣的事情:

public class Worker{ 

    String name; 

    private static int count=0; 

    private int id = ++count; 

    public Worker(String N){ 
    name=N; 
    } 

    public String numberOfTime(){ 
     return name +", "+ id; 
    } 
} 
0

對我來說最好的辦法是引入一個IdGenerator作爲額外的類。

public class IdGenerator { 

    private static int id =1; 

    public static int newId(){ 
     return id++; 
    } 
} 

和你Worker類更改:

public class Worker{ 

    String name; 

    private int id=0; 

    public Worker(String n){ 

    name=n; 
    id = IdGenerator.newId(); 
    } 

    public String numberOfTime(){ 
     return name +", "+ id; 
    } 
} 

這是更好地面向對象的設計比對象本身整合計數器。

相關問題