package cn.guangzhou.xp;class Person { private int age;
private int x;

public Person(int age){

age = x;
} public Person() {

} public void setAge(int x) { if (age <= 0) {
return;
} else {
age = x;
}
} public int getAge() {
return age;
} void shout() {
System.out.println("My age is " + age);
} public static void main(String[] args) { Person p1 = new Person();
Person p2 = new Person(); p1.setAge(5);
p1.shout(); p2.age = -1;
p2.shout(); }}输出结果为什么是 0跟-1 而不是5跟0
错在哪里了??怎么改

解决方案 »

  1.   

    我的个神..你的代码也太坑人了...
     
    你在setAge的方法里.if条件判断里是age <= 0 所以p1.setAge(5)的时候age还是0呀.所以...怎么可能会是5跟0.....
      

  2.   

    if (age <= 0) {
    这里再看看吧
      

  3.   

    public void setAge(int x) {if (age <= 0) { //这里应该改成 if (x <= 0)吧
    return;
    } else {
    age = x;
    }Person p1 = new Person(); //不带参数的构造器,成员都被自动赋值为0,所以上面的if判断满足
    Person p2 = new Person(); //所以就返回,不会给age赋值了另外
    public Person(int age){age = x;
    }
    这个构造方法也有问题,应该是this.age = age吧,否则把参数的age赋值为成员的x,有何意义?
      

  4.   

    你要想输出5,就应该是Person p1 = new Person(5);
      

  5.   

    还有将构造方法改为public Person(int age){
    x = age;
    }