黑马程序员技术交流社区

标题: 我是新手,各位大神帮忙改下代码,谢谢 [打印本页]

作者: 陈泉泉    时间: 2012-4-17 09:50
标题: 我是新手,各位大神帮忙改下代码,谢谢
class Person
{
   private String name,like;
   private int age;
   private void talk()
   {
          System.out.println( "hello world woshi"+name+",jinnian"+age+"woxihuan"+like);
   }
   public void say()
   {
        talk();   
   }
   public  void setName(String str)
   {
           name=str;
   }
   public  void setLike(String L)
   {
           like=L;
   }
   public  void setAge(int a)
   {
           if(a>0)
           age=a;
           else
                   System.out.println("gun!!");
   }
   public String getName()
   {
           return name;
   }
   public String getLike()
   {
           return like;
   }
   public int getAge()
   {
           return age;
   }
   
}
      public class Test3
   {
           public static void main(String[]agrs)
           {
                   Person p=new Person();
                   p.setName("LL");
                   p.setLike("KK");
                   p.setAge(-22);
                   p.say();
           }
   }
我的目的是:当年龄小于0时直接输出GUN!!!不输出别的内容!

作者: 常万    时间: 2012-4-17 09:53
你set里面逻辑判断,放入talk方法中,talk里面没有逻辑判断直接打印。
代码改成这样
class Person
{
   private String name,like;
   private int age;
   private void talk()
   {
          if(age>0)
                  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)
   {

           age=a;

   }
   public String getName()
   {
           return name;
   }
   public String getLike()
   {
           return like;
   }
   public int getAge()
   {
           return age;
   }
   
}
      public class Test3
   {
           public static void main(String[]agrs)
           {
                   Person p=new Person();
                   p.setName("LL");
                   p.setLike("KK");
                   p.setAge(-22);
                   p.say();
           }
   }
作者: 黑马—王宁    时间: 2012-4-17 10:53
如果你想年龄小于0,打印gun,那么你应该在上面的方法say方法,或者talk方法中判断下。
在say中,可以这样;
if(age<0)
System.out.println("gun");
else
talk();

作者: 韩新凯    时间: 2012-4-17 12:01
1.  把private void talk()方法中的  System.out.println( "hello world woshi"+name+",jinnian"+age+"woxihuan"+like);注释掉输出结果就会只是GUN!!;
2.在private void talk()方法里面添加一个判定条件,private void talk() {
                if (age > 0) {
                        System.out.println("hello world woshi" + name + ",jinnian" + age
                                        + "woxihuan" + like);

                } else {
                        System.out.println("GUN!!");
                }
        }
然后在public void setAge(int a)方法中就不要判定条件了,能传值就行了。直接public void setAge(int a) {this.age = a;}
3.最好在setXXX(int xxx){this.xxx = xxx;}这杨写。
作者: 袁培育    时间: 2012-4-17 15:06
其实可以再将els   System.out.println("gun!!");改为 els{System.out.println("gun!!");return null;}就行了


作者: 袁培育    时间: 2012-4-17 15:06
对了  那个void得去掉
作者: 王怡然    时间: 2012-4-17 17:12
看下列程序注释,已把你的问题一一列出;
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();//此处调用类中的输出方法,会出现正常打印语句,可是此语句中的年龄数值会为默认值;
        }
}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2