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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 高慧觉 中级黑马   /  2014-12-3 20:07  /  1152 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. public static void ss(int[]arr)
  2.         {
  3.                
  4.                 for(int i=0;i<arr.length-1;i++)
  5.                 {
  6.                         for(int j=i+1;j<arr.length;j++)
  7.                         {
  8.                                 if (arr[i]>arr[j])
  9.                                
  10.                                 {
  11.                                         int t=arr[j];
  12.                                         arr[j]=arr[i];
  13.                                         arr[i]=t;
  14.                                 }
  15.                                
  16.                         }
  17.                 }
  18.        
  19.                
  20.         }
复制代码

以上代码能编译通过。但是如果把如下部分代码:
  1. if (arr[i]>arr[j])
  2.                                
  3.                                 {
  4.                                         int t=arr[j];
  5.                                         arr[j]=arr[i];
  6.                                         arr[i]=t;
  7.                                 }
复制代码

的括号去掉,如下:
  1. public static void ss(int[]arr)
  2.         {
  3.                
  4.                 for(int i=0;i<arr.length-1;i++)
  5.                 {
  6.                         for(int j=i+1;j<arr.length;j++)
  7.                         {
  8.                                 if (arr[i]>arr[j])
  9.                                
  10.                                
  11.                                         int t=arr[j];
  12.                                         arr[j]=arr[i];
  13.                                         arr[i]=t;
  14.                                
  15.                                
  16.                         }
  17.                 }
  18.        
  19.                
  20.         }
复制代码

就会编译出错。具体错误如下。
"此处不允许使用变量声明 int t=arr【j】"(t下有…“^”)。
这是为什么,谁能解释一下。

评分

参与人数 1黑马币 +1 收起 理由
杨佳名 + 1 细心

查看全部评分

10 个回复

倒序浏览
突然明白了。。。。。。:shutup:
回复 使用道具 举报
如果是一组语句,需要采用复合语句形式,用{ }将这组语句括起来。

评分

参与人数 1黑马币 +3 收起 理由
船长 + 3 赞一个!

查看全部评分

回复 使用道具 举报
if(条件表达式)

                 {

                         执行语句;

                 }


而当if(条件表达式)  语句下面只有一行代码,或者return的时候,才可以把括号去掉。一般没事,就不要把括号去掉了,免得错误。
understand??

评分

参与人数 1黑马币 +3 收起 理由
船长 + 3 赞一个!

查看全部评分

回复 使用道具 举报
即使只有一条语句,一般建议不要省略……
回复 使用道具 举报
条件控制语句和循环都是语句块,下面只要超出一句语句就必须用{}括上,建议一句也写上{}
回复 使用道具 举报
因为if在没有大括号的情况下,只是管离他最近的一条语句,就可以理解为:
if (arr[i]>arr[j])
{
        int t=arr[j];
}
arr[j]=arr[i];
arr[i]=t;
而t是一个局部变量,所以会报语法错误。
回复 使用道具 举报
if下没有{}只执行第一句语句
回复 使用道具 举报
if语句中,如果是单条语句可以不加{}; 但是,如果是多条语句必须加{}。
回复 使用道具 举报
同感,在if(){}语句中,如果省略{},只对if后面的第一句起作用
回复 使用道具 举报
       if (arr[i]>arr[j])            
              int t=arr[j];
              arr[j]=arr[i];
               arr[i]=t;
t的作用域只是针对if语句,后面所以就会判定t没有定义了。最好写if 根括号。
                                
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马