黑马程序员技术交流社区
标题:
这段代码哪错了呢???
[打印本页]
作者:
Style栉
时间:
2014-3-28 23:47
标题:
这段代码哪错了呢???
本帖最后由 Style栉 于 2014-3-29 00:50 编辑
class Demo{
public static void main(String[] args){
int num = 4;
if( num > 0 ){
int x = 10;
}
if( num > 0 )
int x = 10;
}
}
复制代码
//感觉没有问题.可是编译却通不过
作者:
linweiwen
时间:
2014-3-28 23:55
变量作用域出问题了,相当于定义了两次x。
错在第10行,要么第10行那个判断也改成上面那样:
if( num > 0 ){
int x = 10;
}
复制代码
要么改成这样:
int x = 10;
if( num > 0 ){
x = 10;
}
复制代码
作者:
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