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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hacket 高级黑马   /  2013-3-23 22:55  /  2001 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 hacket 于 2013-3-24 10:08 编辑

问题看图:

为何加括号不报错,没加括号会报错。

forerror.png (15.53 KB, 下载次数: 25)

forerror.png

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

12 个回复

倒序浏览
你说的是哪里不加括号?
回复 使用道具 举报
for循环的语句必须用大括号包起来,不然,系统不知道哪些语句在for循环的执行范围内,所以就会报错.
所报的错并不是int y定义的错误,而是for循环的范围确定不了,是语法错误.

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
for循环后若只有一个语句,可以不加大括号,只于为什么不加大括号报错,提示是语法错误。

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
只能说编译器把int y=5;没有当成是一句指令,你如果单纯在for后面跟一条打印语句就不会报错。
回复 使用道具 举报
本帖最后由 胡志超 于 2013-3-24 07:27 编辑

for循环和if、if-else的语法不同,不能当后面只执行一条语句时就可以省略大括号,这并不是什么很大的问题,语法规则就是这样,不用去追究,我们知道是这回事记住就行了

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
夏凡 中级黑马 2013-3-24 08:10:49
7#
for循环的循环体必须用打括号括起来,明确具体的执行范围,这是很多程序设计语言的相同语法规则,是设计语言的时候的规定,java是这样c语言也是这样
回复 使用道具 举报
hacket 高级黑马 2013-3-24 10:16:57
8#
胡志超 发表于 2013-3-24 07:25
for循环和if、if-else的语法不同,不能当后面只执行一条语句时就可以省略大括号,这并不是什么很大的问题, ...
  1. for(int i=1;i<=100;i++)
  2.      System.out.println("hello");
复制代码
按你这样讲,这句也应该报错的,可没有报错呀。
回复 使用道具 举报
hacket 发表于 2013-3-24 10:16
按你这样讲,这句也应该报错的,可没有报错呀。

你之前那个的报错信息是什么???
回复 使用道具 举报
胡志超 发表于 2013-3-24 10:23
你之前那个的报错信息是什么???

Multiple markers at this line
        - Syntax error on token "int", delete
         this token
回复 使用道具 举报
hacket 发表于 2013-3-24 11:01
Multiple markers at this line
        - Syntax error on token "int", delete
         this token

我刚刚用C#代码也写了一遍,也是不行,报这个错误:嵌入的语句不能是声明或标记语句        ,后来到网上搜了下。别人是这样说的:任何语句块其实都是嵌入语句,出现这个错误是因为没有对这个直接放置在条件判断后的申明语句 加上“{}”范围标志符号.所以以后还是都加上“{}”吧
回复 使用道具 举报
胡志超 发表于 2013-3-24 11:21
我刚刚用C#代码也写了一遍,也是不行,报这个错误:嵌入的语句不能是声明或标记语句        ,后来到网上搜了下。 ...

(⊙o⊙)…,知道就行了。
回复 使用道具 举报
这样讲吧! int  y=5 是一个局部变量声明(必须手动赋初值,与类变量不同,系统会默认的赋初值),不是一个语句,而for后面跟的是语句...for的两种格式
for(; ;)
    code语句;
或是
for( ; ;)
{
    code语句;
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马