日期:2014-05-20  浏览次数:20628 次

一个很不理解的问题
for(int   i   =   0;i <10;i++)
      int   j   =   1;

for(int   i   =   0;i <10;i++)
{
      int   j   =   1;
}
有什么区别,为什么第一个不能编译,第二个就可以?

------解决方案--------------------
这两个没什么区别,应该是别的地方有问题。把整段代码贴出来看看。
------解决方案--------------------
源代码?
------解决方案--------------------
你在写int j=1时,编译器会认为那是两个语句成分,一个是变量申明int j,另一个是赋值j=1,如果你把它们放在{}中,那j是一个语句块中的局部变量,没有问题的。但如果你不放在{}中,则对于循环for而言,那是不合法的了,所以出错。
------解决方案--------------------
应该是不能在FOR循环中即声明又赋值,这样写就可以通过编译。
public class Text
{
public static void main(String[] args)
{
int j;
for(int i =0 ;i <10;i++)
//{
j=1;
//}

}
}

------解决方案--------------------
在C里是可以的 JAVA好安全
------解决方案--------------------
我就说不可能编译不通过啊,原来你的源程序是这个样子,呵呵
------解决方案--------------------
int j = 1是两条语句的结合,if 后如果没有大括号只能跟一条语句,所以不合法。
------解决方案--------------------
for if等语句下是不能定义变量的
------解决方案--------------------
还正不知道这样也会出错,
------解决方案--------------------
这问题严重了.....
------解决方案--------------------
学习了
------解决方案--------------------
学习
------解决方案--------------------
呵呵 ~~
好~
------解决方案--------------------
恩~ 学习了
------解决方案--------------------
mark!
------解决方案--------------------
mark
------解决方案--------------------
for, if这样的语句应该跟表达式啦。带初始化的变量定义好象不是表达式吧(我不是很确定,lz可以去找找书或者标准)?
------解决方案--------------------
for (int i=0; i <10; i++)
int j = 1;

这种写法是正确的啊。
java里面加{} 表示在循环执行这个程序块。

不加{} 就用for 下面的第一个分号之前的东西表示程序块。

这样有些影响程序的可读性,但是高手的程序一般都是让人看不懂的。
------解决方案--------------------
学习!
------解决方案--------------------
学习