标题: 关于for循环 [打印本页] 作者: 雷丹 时间: 2013-10-23 23:27 标题: 关于for循环 / legal
for (int i = 0; i <= N; i++) {
int x = 5;
}
// illegal
for (int i = 0; i <= N; i++)
int x = 5;
为什么第二种情况省略了大括号会报错 作者: 杨增坤 时间: 2013-10-23 23:39
public static void main(String args[]) {
int N=8;
for (int i = 0; i <= N; i++) {
int x = 5;
}
// illegal
int x;
for (int i = 0; i <= N; i++)
x = 5;
}
这样就正确了,
要是这样
for (int i = 0; i <= N; i++) int x = 5;
这样 不正确,我感觉是:这样是在内存中不断的创建同一个变量,所以 会出错, 但是用上面的那个情况,内存中只有一个x变量,只是循环的更改其值,所以不会错,我认为是这样的,希望对你有帮助!
厉害,这样的问题都能碰出来!
我也不知道这是为什么,不过,我觉得这个问题有人回答是最好了,如果没人能回答的话,也就算了,没必要知道为什么,因为从你代码看就是做无用功,为了省代码,我把for换成if,问题是一样的:
if (true) {
int x = 5;
}
System.out.println(x); // 报错,无法访问x
你上面的代码就是这样做了无用功,所以我说如果没人回答你的话就算了,知道了也没什么用。
正确的写法应该是:
int x = 0;
if (true) x = 5;
System.out.println(x);
这里我也没加{},但是也不会报错。换成for也一样的。 作者: 魏-玉-彪 时间: 2013-10-24 00:50
请先看for循环语句的语法结构: