黑马程序员技术交流社区

标题: 求解这三行代码运行错误的原因 [打印本页]

作者: hpuie0703    时间: 2016-2-14 10:28
标题: 求解这三行代码运行错误的原因
class Demo1_If {
        public static void main(String[] args) {
                //下面三行代码能否运行正常,为什么?如果运行失败,怎么解?
                /*        int grade1 = 70;
                        if (grade1 >= 60)
                                int x;*/
                        //运行2个错误:需要'.class',不是语句
                        //解决办法:对int x;加上大括号.
                /*        int grade1 = 70;
                        if (grade1 >= 60) {
                                int x;
                        }*/       
        }
}
问题: if的默认控制范围是一个语句,而int x;是一个语句,符合条件,上面的三行代码运行错误?


作者: xieyangxuejun    时间: 2016-2-14 10:28
首先 int x;不是一个完整语句,if后不加括号允许执行一条语句,但是不能有声明,因为这会涉及作用域,但加了大括号就没有作用域了。这应该和代码块一样理解吧!
作者: xiewenjian0313    时间: 2016-2-14 23:02
int x;同学,你这个就是一个错误啊。 int x ; 不能这样写啊
作者: DavidWang    时间: 2016-2-15 15:43
这是什么。。。。。。。。。。。。
作者: songzengyu    时间: 2016-2-15 22:51
int x;是声明,if后只有一个语句的时候不能有声明
作者: 黑马19期--李    时间: 2016-2-16 22:05
我来答吧,你加不加大括号,因为你if后面只有一句,所以if都能控制你那句int x;
但问题是 if里面的变量是局部变量,而你的声明int x;既没有赋值也没有运用执行这种书写因此是不能被java接受的,因此设置提示错误
作者: hekaikai    时间: 2016-2-17 21:53
int x;是声明if后只有一个语句的时候不能有声明
作者: hekaikai    时间: 2016-2-17 21:54
int x;是声明的                 if是条件语句,后只有一个语句的时候不能有声明




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