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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李震 初级黑马   /  2012-8-5 16:59  /  1853 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 李震 于 2012-8-5 17:26 编辑

毕老师的一个练习,我自己做了一遍,不能通过,但我发现不了其中的错误。题目是给人定义一个用于比较年龄是否相同的功能。
class  Person{
private int age;
  person(int age)
{
  this.age=p.age;
}
public boolean compare(Person p)//比较两者之间的年龄,相等返回true,否则返回false;
  {
   return this.age==p.age;
  }
}
class  Age   
{
public static void main(String[] args)
{
  Person p1=new Person(20);
  Person p2=new Person(25);
  boolean b=p.compare(p2);
  System.out.println(b);
}
}

评分

参与人数 1技术分 +1 收起 理由
杨志 + 1 加油!

查看全部评分

4 个回复

倒序浏览
本帖最后由 郑文博 于 2012-8-5 17:16 编辑
  1. class  Person
  2. {
  3.         private int age;
  4.         Person(int age)//构造函数一定是跟类名同样的,注意大小写。
  5.         {
  6.                 this.age =age;//这里是给构造函数初始化,把成员变量传进来。
  7.         }
  8.         
  9.         public boolean compare(Person p)//比较两者之间的年龄,相等返回true,否则返回false;
  10.         {
  11.                 return this.age==p.age;
  12.         }
  13. }
  14. class  Age   
  15. {
  16.         public static void main(String[] args)
  17.         {
  18.                 Person p1=new Person(20);
  19.                 Person p2=new Person(25);
  20.                 boolean b=p1.compare(p2);//此处是对你的两个对象进行比较。书写时注意。
  21.                 System.out.println(b);
  22.         }
  23. }
复制代码
整体发现楼主的书写还是比较粗心的,写程序时细心一点,运行时就能省很多时间的。希望帮到楼主。

评分

参与人数 1技术分 +1 收起 理由
张_涛 + 1 下次注意更改的地方作标记明显.

查看全部评分

回复 使用道具 举报
本帖最后由 焦晨光 于 2012-8-5 17:22 编辑

class  Person{
private int age;
  person(int age)
{
  this.age=p.age;//接受的是整型数值,请问p.age 从何而来?赋的是什么值?应改为:this.age=age;
}
public boolean compare(Person p)//比较两者之间的年龄,相等返回true,否则返回false;
  {
   return this.age==p.age;
  }
}
class  Age   
{
public static void main(String[] args)
{
  Person p1=new Person(20);
  Person p2=new Person(25);
  boolean b=p.compare(p2);//请问引用变量p 有定义吗?如果没有 应改为 boolean b=p1.compare(p2);p1调用 compare方法和p2进行比较。
  System.out.println(b);
}
}

评分

参与人数 1技术分 +1 收起 理由
张_涛 + 1 赞一个!

查看全部评分

回复 使用道具 举报
class  Person{
private int age;
  person(int age)//这里构造方法的名字必须跟类名相同,你把person写成小写了,应该是大写Person
{
  this.age=p.age;//这里应该写成this.age=age,比较的时候你会创建两个对象,每个对象都会传一个int age,你写p.age说明p是一个person类的对象,但你并没有定义这个对象
}
public boolean compare(Person p)//比较两者之间的年龄,相等返回true,否则返回false;
  {
   return this.age==p.age;
  }
}
class  Age   
{
public static void main(String[] args)
{
  Person p1=new Person(20);
  Person p2=new Person(25);
  boolean b=p.compare(p2);//这里应该写成p1.compare(p2); 你创建了p1,p2两个对象,p你根本没定义
  System.out.println(b);
}
}

评分

参与人数 1技术分 +1 收起 理由
张_涛 + 1

查看全部评分

回复 使用道具 举报
张雪磊 发表于 2012-8-5 17:18
class  Person{
private int age;
  person(int age)//这里构造方法的名字必须跟类名相同,你把person写成 ...

谢谢啊,还是我粗心大意没注意到这些问题
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马