看下列程序注释,已把你的问题一一列出;
class Person
{
private String name,like;
private int age;
private void talk()
{
if (age>0 && age<120)//这个地方你应该改进下,要是出来个500你害怕不?
{
System.out.println( "hello world woshi"+name+",jinnian"+age+"woxihuan"+like);
}
else
System.out.println("gun");
}
/*
总的来说定义在此处是一个好的办法;
因为可以让程序更加严谨;
*/
public void say()
{
talk();
}
public void setName(String str)
{
name = str;
}
public void setLike(String L)
{
like = L;
}
public void setAge(int a)
{
/*
你之前在此判断的时候你是想让那个负数直接死在这的对吧?
可是你想过没有,如果你这里判断了挂了,"gun!!"执行了,
但是你在主函数里又调用了 p.say() 方法,你的talk里的输出语句和这句都会出现.
而且并没有进行赋值,会打印默认值;
*/
age = a;
}
public String getName()
{
return name;
}
public String getLike()
{
return like;
}
public int getAge()
{
return age;
}
}
class Test4
{
public static void main(String[] args)
{
Person p = new Person();
p.setName("ll");
p.setLike("kk");
p.setAge(-10);//如果挂了会执行输出语句("gun!!")
p.say();//此处调用类中的输出方法,会出现正常打印语句,可是此语句中的年龄数值会为默认值;
}
} |