菜鸟求助!!
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