/ legal  
for (int i = 0; i <= N; i++) {  
   int x = 5;  
}  
// illegal
for (int i = 0; i <= N; i++)  
   int x = 5; 为什么第二种情况省略了大括号会报错

解决方案 »

  1.   

    for跟if不一样,if后面如果不加大括号的话会默认给紧跟if后的第一句加上大括号,楼主可以在for (int i = 0; i <= N; i++)后面加个分号就不报错了
      

  2.   

    for循环如果不加大括号,也是默认紧跟的第一句吧
      

  3.   

    不了解,估计它认为int x = 5; 不是条语句
      

  4.   

    for后面也是默认第一句,但是你报错可能是别的原因吧
      

  5.   

    http://technet.microsoft.com/zh-cn/magazine/ms173143.aspx
      

  6.   

    一个本地变量声明看起来像是一条语句,但是从技术上说,它不是;它应该是一个本地变量声明语句(local variable declaration statement)[JLS 14.4]。Java语言规范不允许一个本地变量声明语句作为一条语句在for、while或do循环中重复执行[JLS 14.12-14]。一个本地变量声明作为一条语句只能直接出现在一个语句块中。(一个语句块是由一对花括号以及包含在这对花括展中的语句和声明构成的。)
      

  7.   

    你再看看,你报错真正的原因并不是for后面没有加大括号的原因,for循环大括号可以不加,不加的情况下会默认执行第一行语句。
      

  8.   

    应该是for和while if不一样的
      

  9.   

    这种情况下for语句与if语句不一样吧!if语句貌似会默认后面的一条语句用括号弄起来,而for语句是不会的,所以会报错吧
      

  10.   

    把第二个int去掉,会不会是java别名机制造成的