2017-05-08 46 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; 
    } 
} 

这是更好地面向对象的设计比对象本身整合计数器。

相关问题