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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 ぺsimon☆ 于 2013-5-15 15:37 编辑
  1. /*
  2. 内部类访问的练习
  3. */

  4. class Outer
  5. {
  6.         int num=3;
  7.         
  8.         public void out()
  9.         {
  10.         System.out.println(num);
  11.         }

  12.         class Intner
  13.         {
  14.         int num=5;

  15.         public void inn()
  16.         {
  17.         System.out.println(num);
  18.         }
  19.         }
  20. }

  21. class OutInDemo
  22. {
  23.         public static void main(String[] args)
  24.         {
  25.         Outer out=new Outer();
  26.         out.num;
  27.         }
  28. }
复制代码
不知道为什么会报错:
OutInDemo.java:30: 不是语句
        out.num;


评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

7 个回复

倒序浏览
out.num = 3; 试试看。你需要赋值给它
回复 使用道具 举报
这个java的语法就是这样啊, 没有任何原因的啊!!!
回复 使用道具 举报
本帖最后由 钟林杰 于 2013-5-14 16:54 编辑

这应该是代码里面的语法规范,它限制不能无缘无故调用数据成员。例如你的out.num没有使用,所以出现报错。当你使用它了就不会报错,你可以把它赋给一个变量(int i = out.num;),或使用控制台打印(System.out.print(out.num);),这样的情况他就不会报错了。
回复 使用道具 举报
本帖最后由 殇_心。 于 2013-5-14 16:41 编辑

out.name  这是个变量。
一个语句是需要一个完整的逻辑表达式的。
你可以给这个  out.name 赋值或者 赋值给别人。
如:
out.name = 3;
或者  int name = out.name;

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

回复 使用道具 举报
没什么别的原因,java为了方便我们使用,加入了严格的语法检查,程序执行语句out.num; 并没有多大的意义,既不产生副作用,也没打印内容,也没有改变自身的值.....既然这样,java干脆视它为非法的语句。而out.num++; 和System.out.println(out.num);等语句则是合法的。
回复 使用道具 举报
当然会出错,因为语法错误。
num 是Outer 类的一个初始化整型变量,不是方法,不能直接调用。
你可以改为以下语句:
第一种方法:把第30行(out.num)改为

System.out.println(out.num);   //直接打印 Outer中的num值

第二种方法:把第30行(out.num)改为

out.out();    // 调用Outer类中定义的out方法实现打印num的值

以上两种方法都可以实现打印Outer类中的num值

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

回复 使用道具 举报
谢谢各位兄弟姐妹,我明白了呵呵
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马