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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© joechen 中级黑马   /  2013-8-20 20:40  /  3500 人查看  /  17 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 joechen 于 2013-8-21 11:06 编辑

我记得可以省略else的
class  Demo2
{
        public static void main(String[] args)
        {
           int[]shuzu=new int[]{5,8,6,44,5,4};
           dayin(shuzu);
           dayin(shuzu);

        }
        public static void dayin(int[] shuzu)
        {
                for (int x=0;x<shuzu.length ;x++ )
                {
                        if(x!=shuzu.length-1)
                        System.out.print(shuzu[x]+",");
                        else                       //此处的else可以省略吗?
                                System.out.println(shuzu[x]);
                }
        }
}



评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

17 个回复

倒序浏览
求助啊。。。明明记得可以省略的
回复 使用道具 举报
如果满足if后你不想后面的执行,不加else的话,if里要加return;
回复 使用道具 举报
这个不能省略,如果省略了,当x满足if的条件时,shuzu[x]会在这一次循环里输出两遍。
如果if里面有break;continue;或者return这样的,满足了条件就会跳过其余代码的语句,那不写else也可以。

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报 1 0
不行,省略了应该会报错的
回复 使用道具 举报
本帖最后由 张晓辉 于 2013-8-21 20:46 编辑

正常格式
  1. if
  2.    {
  3.     }
  4. else
  5.    {
  6.    }
复制代码
当不需要对else进行条件判断或者判断后不进行其他操作,才可以省略,此题省略else后面的语句在条件内都会给你执行的。if,满足条件,执行语句,在没有遇到是它停止的命令时(此程序包括else,括号,)他会默认执行到最后一行语句,建议按照标准格式写,不要省略括号,看起来更直观

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
漪顿 中级黑马 2013-8-20 21:59:26
7#
不可以呀,如果省略了else,那么 if(x!=shuzu.length-1)只对它下面的第一句话有效果,System.out.println(shuzu[x]);是一定也会执行的。打印结果会是  5,58,86,644,445,54  对,应该是这样,你打印试试看就知道了

  if(x!=shuzu.length-1)
        System.out.print(shuzu[x]+",");
        System.out.println(shuzu[x]);
                }

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
yangjie 发表于 2013-8-20 20:51
这个不能省略,如果省略了,当x满足if的条件时,shuzu[x]会在这一次循环里输出两遍。
如果if里面有break;co ...

这个地方else是不能用别的代替的,我试了下好像是这样的
回复 使用道具 举报
张晓辉 发表于 2013-8-20 21:57
正常格式省略else是在if后面只有一个语句的时候,否则后面的语句在条件内都会给你执行的。if,满足条件,执 ...

好的,感觉说的很有道理
回复 使用道具 举报
漪顿 发表于 2013-8-20 21:59
不可以呀,如果省略了else,那么 if(x!=shuzu.length-1)只对它下面的第一句话有效果,System.out.println(s ...

看不懂。。
回复 使用道具 举报
本帖最后由 漪顿 于 2013-8-20 22:26 编辑

if(x!=shuzu.length-1)
      System.out.print(shuzu[x]+",");    else     //此处的else可以省略吗?
      System.out.println(shuzu[x]);

就是说当有else时(x!=shuzu.length-1)为true时System.out.println(shuzu[x])不执行。当(x!=shuzu.length-1)不为true是System.out.println(shuzu[x])才执行

if(x!=shuzu.length-1)
      System.out.print(shuzu[x]+",");     
     System.out.println(shuzu[x]);


而没有else时(x!=shuzu.length-1)为true时System.out.println(shuzu[x])也执行,因为if只对离他最近的那一句有用,
当(x!=shuzu.length-1)不为true时,System.out.print(shuzu[x]+","); 不执行。System.out.println(shuzu[x]);执行。

好好想下就明白了,加油。


回复 使用道具 举报
见图,

未命名.jpg (46.48 KB, 下载次数: 209)

未命名.jpg
回复 使用道具 举报
对于这个问题,你自己测试一下,运行一下,从结果中就可以看出,能不能省略了,
回复 使用道具 举报
楼主你好,如果你的问题解决了,请把问题的"未解决"更改为“已解决”!!
谢谢合作!
回复 使用道具 举报
meng 高级黑马 2013-8-21 07:38:26
15#
如果真想省略的话,告诉你一个方法,你把if后面要执行的语句用大括号括起来就哦了,比如这样:if{}else,此处的这个else就能省略了
回复 使用道具 举报
forward 发表于 2013-8-21 07:17
楼主你好,如果你的问题解决了,请把问题的"未解决"更改为“已解决”!!
谢谢合作! ...

不知道怎么改啊
回复 使用道具 举报
joechen 发表于 2013-8-21 08:48
不知道怎么改啊

重现编辑的你帖子,重新选择类型
回复 使用道具 举报
forward 发表于 2013-8-21 09:00
重现编辑的你帖子,重新选择类型

改完了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马