黑马程序员技术交流社区

标题: 帮我看看程序中的错误<已解决> [打印本页]

作者: 李震    时间: 2012-8-5 16:59
标题: 帮我看看程序中的错误<已解决>
本帖最后由 李震 于 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);
}
}
作者: 郑文博    时间: 2012-8-5 17:15
本帖最后由 郑文博 于 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. }
复制代码
整体发现楼主的书写还是比较粗心的,写程序时细心一点,运行时就能省很多时间的。希望帮到楼主。

作者: 焦晨光    时间: 2012-8-5 17:16
本帖最后由 焦晨光 于 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);
}
}
作者: 张雪磊    时间: 2012-8-5 17:18
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);
}
}

作者: 李震    时间: 2012-8-5 17:24
张雪磊 发表于 2012-8-5 17:18
class  Person{
private int age;
  person(int age)//这里构造方法的名字必须跟类名相同,你把person写成 ...

谢谢啊,还是我粗心大意没注意到这些问题




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