菜鸟求助

JavaLittleStudent 2011-11-08 11:30:30
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
错在哪里了?要怎么改?
...全文
38 点赞 收藏 8
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
脉动 2011-11-09

package cn.guangzhou.xp;

class Person {
private int age;
private int x;


public Person(int age)
{
age = x; //这边age指的不是Person类的age成员变量,而是指你传进来的参数age;
//可以写成: this.age = age;
}

public Person()
{
}

public void setAge(int x)
{
if(age <= 0) // 这边用age来判断,此时age的值是0(默认初始化的),所以符合判断条件,
{ //执行return语句,返回,再调用shout()方法,输出(age的值是0):My age is 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();

}

}
回复
Fishing_Moon 2011-11-09
public Person(int age,int x){
this.age = age;
this.x = x;
}

public void setAge(int age) {
if (age <= 0) {
return;
} else {
age = x;
}
}
回复
Fishing_Moon 2011-11-09
public Person(int age){
this.age = age;
this.x = x;
}

public void setAge(int age) {
if (age <= 0) {
return;
} else {
age = x;
}
}

输出结果可以得到你要的结果
回复
艳沐石 2011-11-09
setAge的时候,你应该验证的是,传输参数是否大于0吧


应该是这样吧?
if (x <= 0)
return;
else
age = x;
回复
AoYuanSE 2011-11-09

if (age <= 0) {
return;
} else {
age = x;
}
}

你把age<=0 改成age<=-1 就能得到你的结果了
回复
AoYuanSE 2011-11-09
p1的时候

if (age <= 0) {
return;
} else {
age = x;
}
}

age本来就是0啊
回复
Acesidonu 2011-11-09
注意局部变量和成员变量的区别
回复
hpjianhua 2011-11-09
类的成员变量...在函数中改变了他的值,不会影响到他真正的值的..
回复
相关推荐
发帖
非技术区
创建于2007-09-28

2.3w+

社区成员

Java 非技术区
申请成为版主
帖子事件
创建了帖子
2011-11-08 11:30
社区公告
暂无公告