黑马程序员技术交流社区
标题:
菜鸟:为什么运行有问题呢?
[打印本页]
作者:
李志广
时间:
2012-7-1 15:56
标题:
菜鸟:为什么运行有问题呢?
本帖最后由 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();
}
}
显示不兼容类型呢
作者:
周恺
时间:
2012-7-1 16:00
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就可以了
}
作者:
Forever。
时间:
2012-7-1 16:01
楼主要细心那 你的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;
}
作者:
艾衍年
时间:
2012-7-1 16:21
回复的都能解决问题啊,补充一下,可以用his关键字
Person(String name)
{
this.name=name;
}
类似的下面的构造函数也可以改一下
改完后是不是更好一些呢
作者:
周刚
时间:
2012-7-1 16:42
楼主调用的是 Person(String n)
{
name=n;
}
传入的只是一个参数name,而没有给age赋值,调用以下函数。当然会报错了!
public void speak()
{
System.out.println("name="+name+"....age="+age);
}
如果age定义为static时,就不会报错。因为就int变量来说static修饰后会默认赋值为0
作者:
邵阳
时间:
2012-7-1 16:43
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();
}
}
另外你的代码有一个最大的缺陷就是阅读性太差,而你知道,代码阅读性是非常重要的。所以我优化了你的代码。
改过的我用颜色标出。
作者:
李志广
时间:
2012-7-2 12:00
谢谢老师和同学的帮助和支持!!!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2