黑马程序员技术交流社区

标题: 这段代码哪错了呢??? [打印本页]

作者: Style栉    时间: 2014-3-28 23:47
标题: 这段代码哪错了呢???
本帖最后由 Style栉 于 2014-3-29 00:50 编辑
  1.    class Demo{
  2.         
  3.         public static void main(String[] args){
  4.                 int num = 4;
  5.                 if( num > 0 ){
  6.                     int x = 10;
  7.                 }

  8.                 if( num > 0 )
  9.                    int x = 10;
  10.         
  11.         }
  12.    
  13.    }
复制代码

//感觉没有问题.可是编译却通不过
作者: linweiwen    时间: 2014-3-28 23:55
变量作用域出问题了,相当于定义了两次x。
错在第10行,要么第10行那个判断也改成上面那样:
  1.   if( num > 0 ){
  2.                          int x = 10;
  3.                 }
复制代码



要么改成这样:
  1.   int x = 10;
  2.                
  3.                 if( num > 0 ){
  4.                    x = 10;
  5.                 }
复制代码

作者: xietansheng    时间: 2014-3-28 23:57
本帖最后由 xietansheng 于 2014-3-29 00:03 编辑

第10行没有意义,x不能成为一个变量,会引起歧义(第10行定义的x没有使用{ } 使其成为第9行的if的代码块中的局部变量,而是在main方法所在的代码块,如果第9行的if成立,则x成为main方法下直接的局部变量,后面可以使用;如果第9行的if不成立,则后面不能使用x,因此存在不确定性,引起歧义,编译不能通过),解决方法:将 第10行的变量x声明在第9行的if的上面或将第10行用{ }括起来,使其成为if代码块下的局部变量。
作者: Style栉    时间: 2014-3-29 00:49
linweiwen 发表于 2014-3-28 23:55
变量作用域出问题了,相当于定义了两次x。
错在第10行,要么第10行那个判断也改成上面那样:

明白了...谢谢




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