黑马程序员技术交流社区

标题: 【从一个错误认识到:错误提示不一定准确】构造函数一节 [打印本页]

作者: 石好强    时间: 2012-3-31 12:46
标题: 【从一个错误认识到:错误提示不一定准确】构造函数一节
本帖最后由 石好强 于 2012-3-31 13:19 编辑
  1. class Person
  2. {
  3. //Person()----加错位置!!!
  4. //{
  5. //Person(){}; -->类中没有构造函数时,系统会默认加入这个空构造函数。

  6. private String name;
  7. private int age;

  8. Person()
  9. {
  10. System.out.println("A:name="+name+",,age"+age);
  11. }

  12. Person(String n)
  13. {
  14. name = n;
  15. System.out.println("A:name="+name+",,age"+age);
  16. }

  17. Person(String n, int a)
  18. {
  19. name = n;
  20. age = a;
  21. System.out.println("A:name="+name+",,age"+age);

  22. }


  23. }

  24. }

  25. class PersonDemo2
  26. {
  27. public static void main(String[] args)
  28. {
  29. Person p1 = new Person();

  30. Person p2 = new Person(“xiaogang”);

  31. Person p3 = new Person(“xiaoming”,23);




  32. }


  33. }
复制代码
构造函数这一块,我按视频里毕老师的思路写了下代码。但是报错,对着视频瞪了半天没找出来错误,请大家帮忙找下哪出问题了额,和视频里的几乎一样啊。

错误提示如下:

D:\java1203\day05>javac PersonDemo2.java
PersonDemo2.java:25: 非法的表达式开始
        private String name;
        ^
PersonDemo2.java:26: 非法的表达式开始
        private int age;
        ^
PersonDemo2.java:28: 需要 ';'
                Person()
                        ^
PersonDemo2.java:33: 需要 ')'
                Person(String n)
                             ^
PersonDemo2.java:33: 非法的表达式开始
                Person(String n)
                               ^
PersonDemo2.java:33: 需要 ';'
                Person(String n)
                                ^
PersonDemo2.java:50: 需要为 class、interface 或 enum
}
^
7 错误







通过我的这个错误,受到启示:java中错误提示不是百分百定位准确的,我这个错误出在上面外围多了一个Person(),但是系统提示不会提示是那个位置,我在提示位置对照半天没找出错误来。谢谢诸位热心马友。也借此错误让新马友看下,这种错误排查不要迷信系统提示,提示不是万能的。




作者: izwj    时间: 2012-3-31 12:58
请你仔细看看,括号加错了,而且参数要加引号“xiaogang”。
作者: 秦岩    时间: 2012-3-31 13:00
  1. class Person

  2. {
  3.         private String name;   
  4.         private int age;               
  5.         Person()

  6.         {
  7.                 System.out.println("A:name="+name+",,age"+age);
  8.         }
  9.                

  10.         Person(String n)

  11.         {

  12.                 name = n;

  13.                 System.out.println("A:name="+name+",,age"+age);
  14.         }


  15.         Person(String n, int a)

  16.         {

  17.                 name = n;

  18.                 age = a;

  19.                 System.out.println("A:name="+name+",,age"+age);

  20.         }

  21. }


  22. class PersonDemo2

  23. {

  24.         public static void main(String[] args)

  25.         {

  26.                 Person p1 = new Person();


  27.                 Person p2 = new Person("xiaogang");


  28.                 Person p3 = new Person("xiaoming",23);





  29.         }



  30. }
复制代码
这才是正确的代码。。 你对比下~  就明白了~   不明白的地方再回复我~
作者: 石好强    时间: 2012-3-31 13:13
lyqinyan 发表于 2012-3-31 13:00
这才是正确的代码。。 你对比下~  就明白了~   不明白的地方再回复我~

谢谢,找到错误了。多了一个 Person() 放外面了。自己的代码,自己检查错误真不好找,看了好几遍没看出来,光按提示位置找了,没想到错误出在外边。




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