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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© chun 中级黑马   /  2014-11-16 22:35  /  2095 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

练习for循环时
正确程序:
class text
{
   public static void main(String[] args)
   {
        for(int x=0;x<5;x++)
        {
                 for(int y=0;y<=x;y++)
                 {
                  System.out.print("*");
                  }
                System.out.println();
        }
    }
}
运行的结果是:
*
**
***
****
*****
由于粗心,少写了一个大括号,程序如下
class text
{
   public static void main(String[] args)
   {
        for(int x=0;x<5;x++)
        {
                 for(int y=0;y<=x;y++)
                
                  System.out.print("*");
                  }
                System.out.println();
        }
   
}
运行的结果是:
***************
程序中
for(int x=0;x<5;x++)
        {
                 for(int y=0;y<=x;y++)
                
                  System.out.print("*");
                  }
为什么没有出错啊?刚学习不懂,谁帮忙解释一下 ,谢谢!

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1 淡定

查看全部评分

13 个回复

倒序浏览
for循环后面不写大括号只执行for下面的单条语句,所以在语法上你的程序并没有错误,是不会报错的,但由于你内层循环没有写大括号,所以负责换行的输出语句被写在了外层循环的外面,也就是说外层循环结束后才换行,所以你运行出来的结果是没有换行的

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报
hailong 发表于 2014-11-16 22:51
for循环后面不写大括号只执行for下面的单条语句,所以在语法上你的程序并没有错误,是不会报错的,但由于你 ...

:) 谢谢你的回复  有些明白了
回复 使用道具 举报
chun 发表于 2014-11-16 22:52
谢谢你的回复  有些明白了

呵呵,不用客气,多敲敲就好了
回复 使用道具 举报
最后剩下的大括号竟然没报错……
回复 使用道具 举报
迷失的小Z 发表于 2014-11-16 23:11
最后剩下的大括号竟然没报错……

呵呵,他是少写了一对大括号,所以是不会报错的
回复 使用道具 举报
少写一对大括号,lz真是巧妙地避开了错误!!!:lol
回复 使用道具 举报
hailong 发表于 2014-11-17 00:03
呵呵,他是少写了一对大括号,所以是不会报错的

恩 是啊  真的是巧妙的避开了错误啊……
回复 使用道具 举报
- -!!少了是一对括号。。
回复 使用道具 举报
因为不加大括号它会默认包含距离循环体最近的下一行代码。和if...else...语句一样。如:int a=10,b=11; if(b>a){....}  else{.....}此时else后的大括号可加可不加。
回复 使用道具 举报
:lol语法没问题就没错
回复 使用道具 举报
cbb 中级黑马 2014-11-20 15:25:31
12#
本帖最后由 cbb 于 2014-11-20 15:26 编辑

当循环体或者是选择体下面只有一条语句的时候可以不写大括号,当多条的时候必须加上。否则只执行第一条,其他语句视为与循环体或者选择体同级别存在。  你的就是这种情况

for()
{
    1.条语句。
    2.条语句。
}
for()
    1.条语句。  这一条是循环条件满足被执行的
    2.条语句。  这一条确是和for平等的!只有for循环结束以后才会被执行。
回复 使用道具 举报
嵌套for循环中执行了for和它下一条打印语句,如果在写行代码就会出错,默认的执行for循环下的一行代码
回复 使用道具 举报
一般情况下if...else   for(){} 等判断或者循环语句,如果执行代码块中只有一句代码大括号可以省略不写,否则只执行下面的第一句代码。比如for(i=0;i<10;i++) i++;i--;for循环只执行i++,循环结束后执行i--。for(i=0;i<10;i++) {i++;i--;}for循环中两句代码都会执行。写上大括号是一种良好的编程习惯。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马