当前位置:编程学习 > JAVA >>

菜鸟求助!!

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
错在哪里了??怎么改 --------------------编程问答-------------------- 我的个神..你的代码也太坑人了...
 
你在setAge的方法里.if条件判断里是age <= 0 所以p1.setAge(5)的时候age还是0呀.所以...怎么可能会是5跟0..... --------------------编程问答-------------------- if (age <= 0) {
这里再看看吧 --------------------编程问答--------------------
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,有何意义?




--------------------编程问答-------------------- 你要想输出5,就应该是Person p1 = new Person(5); --------------------编程问答-------------------- 还有将构造方法改为public Person(int age){
x = age;
}

补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,