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

提示:i找不到符号,需要inti=0;想知道为什么for语句定义过i为什么放到for语句外就不行了?我要针对的是变量i,而不是我的循环对不对,代码应不应这么写。... 提示:i找不到符号,需要int i =0;
想知道为什么for语句定义过i为什么放到for语句外就不行了?
我要针对的是变量i,而不是我的循环对不对,代码应不应这么写。
展开
 我来答
技术狂潮AI
2010-12-01 · 深耕互联网行业十余载,热衷AI技术研究
技术狂潮AI
采纳数:36 获赞数:110

向TA提问 私信TA
展开全部
你的变量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);
}
悲伤冻结
2010-12-01
知道答主
回答量:1
采纳率:0%
帮助的人:0
展开全部
for语句中定义的i的作用范围是for语句的循环体,若在for语句外定义i,则作用范围会扩大。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
夏贤惠束朗
2019-07-04 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:26%
帮助的人:634万
展开全部
不要用c的思想思考java, 如果是c的话,结果应该是3,
java是每次都要为所执行到的变量分配内存的。
i+=i++;这里前后两个i
是不同的内存 后置自增是在运行后加1所以对前面的i没影响。
两个i,java最后取的是前一个i,没办法啊,呵呵,所以只能是2。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ThinkIBM
2010-12-01 · TA获得超过5289个赞
知道大有可为答主
回答量:3263
采纳率:0%
帮助的人:5472万
展开全部
你的代码等同于:
for (int i = 1;i < 10; i++)
{ i++;}
System.out.println(i); // 此时i超出定义范围了

你要把out.println放入大括号里才行,或把i的定义放到for外面
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友e51baf0
2010-12-01 · TA获得超过255个赞
知道小有建树答主
回答量:144
采纳率:0%
帮助的人:75.5万
展开全部
i是在循环内部定义的变量,你在循环外面打印当然找不到i值了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(7)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式