黑马程序员技术交流社区

标题: java代码提问:大家帮忙看一下这个代码为什么错了 [打印本页]

作者: py389172739    时间: 2016-4-14 19:08
标题: java代码提问:大家帮忙看一下这个代码为什么错了
java代码提问:大家帮忙看一下这个代码1---4哪里错了?为什么错了
  1. public static void main(String[] args) {
  2. ①     int num = 100;
  3. ②     if(num > 10)
  4. ③       int x = 200;
  5. ④     System.out.println("进入if结构");
  6.     }
复制代码
我感觉是3错了,但是我不明白为什么,只是感觉怪怪的,求大神指点……



作者: zxw    时间: 2016-4-14 19:13
你这什么意思?我都没看明白。
4不再if判断里面,因为if没加括号,作用范围是离他最近的一行
作者: py389172739    时间: 2016-4-14 19:18
zxw 发表于 2016-4-14 19:13
你这什么意思?我都没看明白。
4不再if判断里面,因为if没加括号,作用范围是离他最近的一行 ...

意思就是判断下面哪一句代码是错误的:
public static void main(String[] args) {
①     int num = 100;
②     if(num > 10)
③       int x = 200;
④     System.out.println("进入if结构");
    }
从1到4中选一个,我没看出来是哪一句错了
作者: Vintagecheese    时间: 2016-4-14 19:20
1. if条件结构语句格式错误, 大括号没有添加
2. 程序表达意义不清晰

  int num = 100;
  if(num > 10) {
       int x = 200;
  }
System.out.println("进入if结构");
作者: py389172739    时间: 2016-4-14 19:25
Vintagecheese 发表于 2016-4-14 19:20
1. if条件结构语句格式错误, 大括号没有添加
2. 程序表达意义不清晰

这个大括号好像可以不用添加吧,不添加的话if只对离他最近的一行代码起作用
作者: Vintagecheese    时间: 2016-4-14 19:34
py389172739 发表于 2016-4-14 19:25
这个大括号好像可以不用添加吧,不添加的话if只对离他最近的一行代码起作用 ...

因为你在if后声明了变量x
而声明变量必须要有作用域
假如你只是在if后跟了一条例如打印操作的语句时 则大括号可以省略
但是在这个案例中 java编译时会报错的
所以要大括号
作者: Vintagecheese    时间: 2016-4-14 19:36
                        int num = 100;
                        int x;
                             if(num > 10)
                        x = 200;
                        System.out.println("进入if结构");

假如代码改为这样 在if语句前声明变量x 则不会报错 正常运行

作者: Vintagecheese    时间: 2016-4-14 19:41
if 的大括号是一个作用域,判断之后会执行里面的语句,没有大括号就是相当于普通代码,会顺序执行, 这也就是常说的不加大括号会对就近一条语句生效.
但是当程序进行到if后的 int x 语句时, 这个变量没有一个正确的作用域  
假如案例中num为9 小于10, 理论来说 int x 这句不会实现, 于是不加括号的问题就来了, 根据程序需要这句话应该不执行, 但是正因为没有作用域, 当顺序执行的时候, 声明变量x就会成为一个非法表达式.
作者: py389172739    时间: 2016-4-14 19:49
Vintagecheese 发表于 2016-4-14 19:41
if 的大括号是一个作用域,判断之后会执行里面的语句,没有大括号就是相当于普通代码,会顺序执行, 这也就 ...

受教了,你理解的很深刻
作者: 豆豆斌    时间: 2016-4-15 08:55
我感觉从语法角度说,我觉得没错,是题出的不够严谨
作者: kcufow    时间: 2016-4-15 17:30
学习了 这个问题很好啊




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