class Person
{
private int age;
public void setAge(int i)
{
if(i<0 || i>130)
return;
age = i; 
}
public int getAge()

return age;
}
}
public class TestPerson
{
public static void main(String args[])
{ Person p1 = new Person();
p1.setAge(3);
p1.setAge(-6);
System.out.println(p1.getAge());
}
}我用ECLIPSE运行时 输出的是3  为什么不是  0呢?

解决方案 »

  1.   

    p1.setAge(-6); 
    if(i <0 || i>130) 
    return;
      

  2.   

    p1.setAge(3);   age=3
    p1.setAge(-6)  return;  age=3
      

  3.   

    public void setAge(int i) 

    if(i <0 || i>130) 
    return; 

    age = i; 
    } 第一次setAge(3) 
    注意 你的if语句没有大括号。
    此时 没有进入if语句没有执行return 设置age=3了第二次setAge(-6)
    进入if语句 , 直接返回了 没有执行age=i;
    所以打印的时候还是原来的age值
    在没有大括号的情况下 if语法默认包含到下一条语句的分号结尾。
      

  4.   

    if(i <0 || i>130)
    return; 
    age = i; 
    第一次给i赋值3,不符合if条件,那么age=3;第二次,给i赋值-6,符合if条件,那么就执行return语句,后面的age=i就没有执行。所以最后age=3
    根本就不可能是0,楼主你的0是从哪来的啊?
      

  5.   

    if(i <0 || i>130) {
    age=0;
    return;

    age = i; 
    这样你就能得到0了;