菜鸟求助

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
错在哪里了?要怎么改?
...全文
64 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
脉动 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
  • 打赏
  • 举报
回复
注意局部变量和成员变量的区别
uastation 2011-11-09
  • 打赏
  • 举报
回复
类的成员变量...在函数中改变了他的值,不会影响到他真正的值的..

23,409

社区成员

发帖
与我相关
我的任务
社区描述
Java 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧