A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李志广 中级黑马   /  2012-7-1 15:56  /  1759 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 007lzg 于 2012-7-2 12:06 编辑

class Person
{
        private String name;
        private String age;
        Person(String n)
                {
                name=n;
                }
        Person(String n ,int a)
           {        
                name=n;
                age=a;
                }
        public void speak()
                {
                System.out.println("name="+name+"....age="+age);
                }
}
class PersonDemo3
{
        public static void main(String[] args)
                {
                Person p=new Person("lishi");
                p.speak();
                }
}

显示不兼容类型呢

6 个回复

倒序浏览
class Person
{
        private String name;
        private String age;//你在初始化的时候已经将age定义为了String类型.建议定义成int,
        Person(String n)
                {
                name=n;
                }
        Person(String n ,int a)//构造函数这里传入一个int类型,
           {        
                name=n;
                age=a;//原来age是String类型的,怎么可以将int类型的数据传给它呢?把第四行的private String age;改为private int age就可以了

                }
回复 使用道具 举报
楼主要细心那 你的age是一个String类型,你传一个int型的东西进来他当然不认识了。
class Person
{
        private String name;
        private String age;
        Person(String n)
                {
                name=n;
                }
        Person(String n ,int a)
           {        
                name=n;
                age=a;
                }
回复 使用道具 举报
回复的都能解决问题啊,补充一下,可以用his关键字
  Person(String name)
                 {
                      this.name=name;
                 }
类似的下面的构造函数也可以改一下
改完后是不是更好一些呢
回复 使用道具 举报
楼主调用的是     Person(String n)
                {
                name=n;
                }
传入的只是一个参数name,而没有给age赋值,调用以下函数。当然会报错了!
public void speak()
                {
                System.out.println("name="+name+"....age="+age);
                }
如果age定义为static时,就不会报错。因为就int变量来说static修饰后会默认赋值为0
回复 使用道具 举报
class Person
{
        private String name;
        private int age;
        Person(String name)
                {
                this.name=name;//为了提高阅读性都叫name,用this关键字作区分,表示对象中的name。
                }
        Person(String name,int age)
           {        
                this.name=name;
               
this.age=age;//这里你构造函数里定义a的类型是int,而成员变量里定义的是String,所以会出现错误。
           //所以要是类型统一,我把你上面的改了
                }
        public void speak()
                {
                System.out.println("name="+name+"....age="+age);//这里name和age其实是省略了this.
                }
}
class PersonDemo3
{
        public static void main(String[] args)
                {
                Person p=new Person("lishi");
                p.speak();
                }
}
另外你的代码有一个最大的缺陷就是阅读性太差,而你知道,代码阅读性是非常重要的。所以我优化了你的代码。
改过的我用颜色标出。
回复 使用道具 举报
谢谢老师和同学的帮助和支持!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马