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

[复制链接]
查看11 | 回复5 | 2010-12-1 15:18:12 | 显示全部楼层 |阅读模式
提示:i找不到符号,需要int i =0;
想知道为什么for语句定义过i为什么放到for语句外就不行了?
我要针对的是变量i,而不是我的循环对不对,代码应不应这么写。

回复

使用道具 举报

千问 | 2010-12-1 15:18:12 | 显示全部楼层
你的变量i定义的只是一个局部变量,定义在for循环里面,它的作用域只限制在for循环里访问。而你的for循环没加大括号。系统默认其代码快只能有一条语句,就是你的i++,所以你的System.out.println(i); 在循环之外,而你的i在外部根本就没定义,所以找不到i。要么把i定义在循环外部inti ; 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.p
回复

使用道具 举报

千问 | 2010-12-1 15:18:12 | 显示全部楼层
for语句中定义的i的作用范围是for语句的循环体,若在for语句外定义i,则作用范围会扩大。
回复

使用道具 举报

千问 | 2010-12-1 15:18:12 | 显示全部楼层
不要用c的思想思考java, 如果是c的话,结果应该是3,java是每次都要为所执行到的变量分配内存的。i+=i++;这里前后两个i是不同的内存 后置自增是在运行后加1所以对前面的i没影响。两个i,java最后取的是前一个i,没办法啊,呵呵,所以只能是2。
回复

使用道具 举报

千问 | 2010-12-1 15:18:12 | 显示全部楼层
你的代码等同于:for (int i = 1;i < 10; i++){ i++;} System.out.println(i); // 此时i超出定义范围了你要把out.println放入大括号里才行,或把i的定义放到for外面
回复

使用道具 举报

千问 | 2010-12-1 15:18:12 | 显示全部楼层
i是在循环内部定义的变量,你在循环外面打印当然找不到i值了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行