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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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错了,但是我不明白为什么,只是感觉怪怪的,求大神指点……


10 个回复

倒序浏览
你这什么意思?我都没看明白。
4不再if判断里面,因为if没加括号,作用范围是离他最近的一行
回复 使用道具 举报
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中选一个,我没看出来是哪一句错了
回复 使用道具 举报
1. if条件结构语句格式错误, 大括号没有添加
2. 程序表达意义不清晰

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

这个大括号好像可以不用添加吧,不添加的话if只对离他最近的一行代码起作用
回复 使用道具 举报
py389172739 发表于 2016-4-14 19:25
这个大括号好像可以不用添加吧,不添加的话if只对离他最近的一行代码起作用 ...

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

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

受教了,你理解的很深刻
回复 使用道具 举报
我感觉从语法角度说,我觉得没错,是题出的不够严谨
回复 使用道具 举报
学习了 这个问题很好啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马