A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 正阳门下 中级黑马   /  2015-12-17 23:03  /  2440 人查看  /  29 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

for(; ;);{
       System.out.println("hello");
}
这个编译的时候是会报错;
但是
int i=2;
while (i>1);{
   System.out.println("World");
}
这个是编译通过的,求解释

29 个回复

倒序浏览
xbin0316@qq.com 来自手机 初级黑马 2015-12-17 23:08:55
沙发
for循环的括号,编译器是靠;号来区别里面几个部分的,你把;打在了括号外面,编译器会把那个)当做最后一个;号里的内容,语法结构就不完整了。
以上全凭个人经验猜测。
回复 使用道具 举报
是挺难以理解,同问
回复 使用道具 举报
xbin0316@qq.com 发表于 2015-12-17 23:08
for循环的括号,编译器是靠;号来区别里面几个部分的,你把;打在了括号外面,编译器会把那个)当做最后一 ...

有几分道理的
回复 使用道具 举报
xbin0316@qq.com 来自手机 初级黑马 2015-12-17 23:22:35
报纸
我更正前面说的话;还记得for循环不用{}的简写形式么?你的代码里面就是for的简写,简写的语句快就是;,也就是说这个for循环语句块里面什么都没有。
回复 使用道具 举报
xbin0316@qq.com 来自手机 初级黑马 2015-12-17 23:23:40
地板
然后你后面跟着{}就是没意义的东西,所以报错。
回复 使用道具 举报
你这个分分号很费解啊
回复 使用道具 举报
语法错误也拿来分享.........................
回复 使用道具 举报
魏志林 来自手机 中级黑马 2015-12-18 12:41:12
9#
我觉得while是一条语句,system.out也是一个代码块,相当于两个独立的部分,所以可以通过
回复 使用道具 举报
我觉得你的while程序可以编译通过但是不会执行出结果吧
回复 使用道具 举报
18338762337 发表于 2015-12-18 15:24
我觉得你的while程序可以编译通过但是不会执行出结果吧

对的,仅仅是通过,没有结果
回复 使用道具 举报
xbin0316@qq.com 发表于 2015-12-17 23:22
我更正前面说的话;还记得for循环不用{}的简写形式么?你的代码里面就是for的简写,简写的语句快就是;, ...

没懂,可以讲得仔细点吗
回复 使用道具 举报
chengz 中级黑马 2015-12-18 22:45:00
13#
for(;;){}  格式要记牢啊
回复 使用道具 举报
李永佳 发表于 2015-12-18 12:17
语法错误也拿来分享.........................

这样大家以后也不会错了
回复 使用道具 举报
我稍微改了下, 把for循环改成这个:
for(int i = 2;i > 1 ;);{
       System.out.println("hello");
                }
编译能通过。
然后把 while循环改成这个:
while (true);{
                   System.out.println("World");
                }       
编译不通过。
我猜测当有变量参与循环时,编译器会觉得有可能在变量满足一定的条件时,就会跳出循环,或者说编译器觉得循环有结束的可能性,当循环中什么也没有,或者while(true);时,这个循环就一定是一个无限循环,没有结束的可能性,下面的代码执行不到,所以会报错。

新手猜测,若有不对的地方,请见谅!
回复 使用道具 举报
挺费时间的,,
回复 使用道具 举报
李勋@1211 发表于 2015-12-18 23:13
我稍微改了下, 把for循环改成这个:
for(int i = 2;i > 1 ;);{
       System.out.println("hello");

我也感觉是这个原因,谢谢你提出来,这个我还没试过呢
回复 使用道具 举报
river1205 来自手机 中级黑马 2015-12-19 07:25:18
18#
和概念冲突,你可以看看报什么错啊
回复 使用道具 举报
觉得15楼说得有道理。可能编译的时候就能查出问题
回复 使用道具 举报
while编译通过, 但是不执行之后的东西 ,是没有意义的!!!! 一个编译错误,一个运行无意义
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马