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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

首先提供一下刚才回答别人帖子的网址:http://bbs.itheima.com/forum.php ... peid%26typeid%3D332,我把楼主的代码补齐,想运行一下,却发生了很多莫名其妙的错误。发下补全后正确的代码:
  1. class A
  2. {
  3.     int x = 1;
  4.     class B
  5.         {
  6.                 int x = 2;
  7.                 void func()
  8.                 {
  9.                             int x = 3;
  10.                            System.out.println("A的X为:"+A.this.x+"  B的X        为:"+B.this.x+"  func的X为:"+this.x);       
  11.                         }
  12.             }
  13.         void show()
  14.         {
  15.                 new B().func();
  16.                 //B b=new B();
  17.                 //b.func();
  18.         }
  19. }
  20. class Demo
  21. {
  22.         public static void main(String[] args)
  23.         {
  24.                 new A().show();
  25.                 //A a=new A();
  26.                 //a.show();
  27.         }
  28. }
  29. //[运行结果]A的X为:1  B的X为:2  func的X为:2
复制代码

说下错误:①asd.java:17: 需要 <标识符>
        pubolic static void main()
               ^
1 错误,这个很低级,public写错了
②改完后编译,asd.java:19: 找不到符号
符号: 方法 func()
位置: 类 A
    new A().func();
               ^
1 错误,这个我找了半天,原来是粗心,没看见func()是类B里的方法,由于内部类必须得创建内部类本类对象进行调用,改成new B().func();
③asd.java:29: 需要 <标识符>
        }s
         ^
asd.java:30 进行语法解析时已达到文件结尾
}→
  ^
2 错误
这个更低级,主函数括号外多写了个S
④剩下的就是让我郁闷了很久的,编译时没错误,运行时总是出现这一句:
Exception in thread "main" java.lang.NoSuchMethodError:main
我知道这个错误是说“没有相匹配的方法错误”但是以前没遇到过,怎么都找不出来,对着代码看了n久,发现我的主函数所在的类的类名也是B,与A中的内部类名相同,以为终于找到错误的源头,赶紧把B改成Demo,结果一运行还是出现这讨厌的语言:Exception in thread "main" java.lang.NoSuchMethodError:main,我于是继续看啊看,过了n久。。终于发现一个让我郁闷不能再郁闷的问题,大家看我上面的错误第一个:pubolic static void main()是这个对吧,main()里面什么都没写!!应该是main(String[] args),终于找到!!赶紧编译运行,终于成功,泪奔啊。。。后来成功后,又无聊把主函数所在的Demo类的类名改成B,运行,照样成功,虽然与A类的内部类名相同,但是照样成功。。不知道为什么。。。
写了这么多,就是想让大家看到这三个低级错误,并且记住这三个异常,不要在犯我一样的错误。

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

1 个回复

倒序浏览
感谢!感谢!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马