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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 木糖醇 中级黑马   /  2013-9-4 01:35  /  1288 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 木糖醇 于 2013-9-4 11:32 编辑
  1. class Person
  2. {
  3. private String name;
  4. private int age;
  5. Person(int age)
  6. {
  7. this.age = age;
  8. //使每个人出生都有一个初始化年龄
  9. }
  10. Person(String name)
  11. {
  12. this.name =name;
  13. //由于两个name同名,所以加上this,用于明确指出哪个name是调用这个函数的对象的数值。
  14. }
  15. Person(String name,int age)
  16. {
  17. this.name = name;
  18. this.age = age;
  19. }

  20. public void speak()
  21. {
  22. System.out.println("name="+this.name+"...age="+this.age);
  23. this.show();
  24. }
  25. public void show()
  26. {
  27. System.out.println(this.name);
  28. }

  29. //需求:给人定义一个用于比较年龄是否相同的功能。也就是是否同龄人。
  30. public boolean compare(Person p)
  31. //Person p是将要与自己做比较的人。
  32. {
  33. return this.age==p.age;
  34. }
  35. }

  36. class PersonDemo3
  37. {
  38. public static void main(String[] args)
  39. {
  40. Person p1 = new Person(20);
  41. //定义一个p1,年龄是20
  42. Person p2 = new Person(25);
  43. //定义一个p1,年龄是25
  44. boolean b=p1.compare(p2);
  45. //两个数值进行比较
  46. System.out.println(b);
  47. //输出结果
  48. }
  49. }
复制代码
为什么输出结果会是这样?
Exception in thread "main" java.lang.NoSuchMethodError: Person: method <init>()V
not found
        at PersonDemo.main(persondemo.java:34)
求解答啊

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1 淡定

查看全部评分

8 个回复

倒序浏览
代码测试没问题,你是什么环境下编译的?
回复 使用道具 举报
把你PersonDemo.java文件贴出来看看,这个Person类没有问题
回复 使用道具 举报
代码没有问题,问题可能在于楼主,编译和执行的文件不是这个
回复 使用道具 举报
你这个问题在于你同包下定义有同名的类,该类没有这个方法。你调用不了。
回复 使用道具 举报
在把类名改一下,全部改成Person1,或重新建个包。我遇到这情况,原因是同一个包内有相同类。应该是这问题,试试吧{:soso_e113:}
回复 使用道具 举报
EYE_SEE_YOU 发表于 2013-9-4 08:00
代码没有问题,问题可能在于楼主,编译和执行的文件不是这个

果然是高手!!!我想了一晚上,一直觉得是代码的问题{:soso_e136:}
回复 使用道具 举报
gulup 发表于 2013-9-4 02:03
代码测试没问题,你是什么环境下编译的?

嗯   代码确实没问题    是我自己的疏忽   运行错了
回复 使用道具 举报
魏先勇 发表于 2013-9-4 07:47
把你PersonDemo.java文件贴出来看看,这个Person类没有问题

嗯    已经解决了    是运行的问题
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马