日期:2014-05-20  浏览次数:20682 次

请帮我看看为什么变量id没有自增?
import java.util.*;

public class Test
{
public static void main(String[] args)
{
Employee[] staff = new Employee[3];
staff[0] = new Employee("abc", 5000);
staff[1] = new Employee("efg", 6000);
staff[2] = new Employee("opq", 7000);

for(int i=0; i<staff.length; i++)
{
System.out.println("name = " + staff[i].getName() + ", salary = " + staff[i].getSalary() + ", and his id is " + staff[i].getId());
}

}
}

class Employee
{
private String name;
private double salary;
private int id;
private static int nextId = 1;//为什么此处不在下面的构造器中赋值,像id一样?

public Employee(String n, double s)
{
name = n;
salary = s;
id = 0;
}

public String getName()
{
return name;
}

public double getSalary()
{
return salary;
}

public void setId()
{
id = nextId;
nextId++;
}

public int getId()
{
return id;
}


}

 我觉得id应该是1, 2, 3,但是结果是


另外,nextId为什么不在构造器中赋值?
?

------解决方案--------------------
setId() 方法没有调用!
------解决方案--------------------

import java.util.*;

public class Test111 {
public static void main(String[] args) {
Employee[] staff = new Employee[3];
staff[0] = new Employee("abc", 5000);
staff[1] = new Employee("efg", 6000);
staff[2] = new Employee("opq", 7000);

for (int i = 0; i < staff.length; i++) {
System.out.println("name = " + staff[i].getName() + ", salary = "
+ staff[i].getSalary() + ", and his id is "
+ staff[i].getId());
}

}
}

class Employee {
private String name;
private double salary;
private int id;
private static int nextId = 1;// 为什么此处不在下面的构造器中赋值,像id一样?

public Employee(String n, double s) {
name = n;
salary = s;
id = nextId++; //因为构造函数赋值为0
}

public String getName() {
return name;
}

public double getSalary() {
return salary;
}

public void setId() {
id = nextId;
nextId++;
}

public int getId() {
return id;
}

}

------解决方案--------------------
只对类进行了初始化,没有调用setXXX()修改私有成员变量。
private static int nextId = 1;//为什么此处不在下面的构造器中赋值,像id一样?
这个变量是一个静态变量,在类初始化之前就被初始化,所以要有初始值。
------解决方案--------------------
setId() 
------解决方案--------------------
你都没用自增操作符  怎么自增啊