首先提供一下刚才回答别人帖子的网址:http://bbs.itheima.com/forum.php ... peid%26typeid%3D332,我把楼主的代码补齐,想运行一下,却发生了很多莫名其妙的错误。发下补全后正确的代码:- class A
- {
- int x = 1;
- class B
- {
- int x = 2;
- void func()
- {
- int x = 3;
- System.out.println("A的X为:"+A.this.x+" B的X 为:"+B.this.x+" func的X为:"+this.x);
- }
- }
- void show()
- {
- new B().func();
- //B b=new B();
- //b.func();
- }
- }
- class Demo
- {
- public static void main(String[] args)
- {
- new A().show();
- //A a=new A();
- //a.show();
- }
- }
- //[运行结果]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类的内部类名相同,但是照样成功。。不知道为什么。。。
写了这么多,就是想让大家看到这三个低级错误,并且记住这三个异常,不要在犯我一样的错误。 |