java代码: for (int i = 1;i < 10; i++) i++; System.out.println(i); 为什么编译通不过

2024年11月17日 18:47
有5个网友回答
网友(1):

你的变量i定义的只是一个局部变量,定义在for循环里面,它的作用域只限制在for循环里访问。
而你的for循环没加大括号。系统默认其代码快只能有一条语句,就是你的i++,所以你的System.out.println(i); 在循环之外,而你的i在外部根本就没定义,所以找不到i。要么把i定义在循环外部 int i ; for(i = 0; i < 10; i++){ i++ ; } System.out.println(i) 这样的结果智能输出跳出循环时i的值,结果为10.
①只能这样,变量i定义在外面。
int i;
for (i = 0; i < 10; i++){
i++;
System.out.println(i);
}
②或者把输出语句放在循环体内部。
for (int i = 0; i < 10; i++){
i++;
System.out.println(i);
}

网友(2):

for语句中定义的i的作用范围是for语句的循环体,若在for语句外定义i,则作用范围会扩大。

网友(3):

不要用c的思想思考java, 如果是c的话,结果应该是3,
java是每次都要为所执行到的变量分配内存的。
i+=i++;这里前后两个i
是不同的内存 后置自增是在运行后加1所以对前面的i没影响。
两个i,java最后取的是前一个i,没办法啊,呵呵,所以只能是2。

网友(4):

你的代码等同于:
for (int i = 1;i < 10; i++)
{ i++;}
System.out.println(i); // 此时i超出定义范围了

你要把out.println放入大括号里才行,或把i的定义放到for外面

网友(5):

i是在循环内部定义的变量,你在循环外面打印当然找不到i值了。