黑马程序员技术交流社区

标题: 这个else可以省略吗? [打印本页]

作者: joechen    时间: 2013-8-20 20:40
标题: 这个else可以省略吗?
本帖最后由 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]);
                }
        }
}




作者: joechen    时间: 2013-8-20 20:46
求助啊。。。明明记得可以省略的
作者: 黑马伍哲沂    时间: 2013-8-20 20:50
如果满足if后你不想后面的执行,不加else的话,if里要加return;

作者: yangjie    时间: 2013-8-20 20:51
这个不能省略,如果省略了,当x满足if的条件时,shuzu[x]会在这一次循环里输出两遍。
如果if里面有break;continue;或者return这样的,满足了条件就会跳过其余代码的语句,那不写else也可以。
作者: 好好先生    时间: 2013-8-20 21:07
不行,省略了应该会报错的
作者: 张晓辉    时间: 2013-8-20 21:57
本帖最后由 张晓辉 于 2013-8-21 20:46 编辑

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


作者: joechen    时间: 2013-8-20 22:00
yangjie 发表于 2013-8-20 20:51
这个不能省略,如果省略了,当x满足if的条件时,shuzu[x]会在这一次循环里输出两遍。
如果if里面有break;co ...

这个地方else是不能用别的代替的,我试了下好像是这样的

作者: joechen    时间: 2013-8-20 22:01
张晓辉 发表于 2013-8-20 21:57
正常格式省略else是在if后面只有一个语句的时候,否则后面的语句在条件内都会给你执行的。if,满足条件,执 ...

好的,感觉说的很有道理

作者: joechen    时间: 2013-8-20 22:03
漪顿 发表于 2013-8-20 21:59
不可以呀,如果省略了else,那么 if(x!=shuzu.length-1)只对它下面的第一句话有效果,System.out.println(s ...

看不懂。。

作者: 漪顿    时间: 2013-8-20 22:23
本帖最后由 漪顿 于 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]);执行。

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



作者: xiaoxu    时间: 2013-8-21 00:19
见图,

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

未命名.jpg

作者: 杨增坤    时间: 2013-8-21 07:16
对于这个问题,你自己测试一下,运行一下,从结果中就可以看出,能不能省略了,
作者: 杨增坤    时间: 2013-8-21 07:17
楼主你好,如果你的问题解决了,请把问题的"未解决"更改为“已解决”!!
谢谢合作!
作者: meng    时间: 2013-8-21 07:38
如果真想省略的话,告诉你一个方法,你把if后面要执行的语句用大括号括起来就哦了,比如这样:if{}else,此处的这个else就能省略了

作者: joechen    时间: 2013-8-21 08:48
forward 发表于 2013-8-21 07:17
楼主你好,如果你的问题解决了,请把问题的"未解决"更改为“已解决”!!
谢谢合作! ...

不知道怎么改啊

作者: 杨增坤    时间: 2013-8-21 09:00
joechen 发表于 2013-8-21 08:48
不知道怎么改啊

重现编辑的你帖子,重新选择类型

作者: joechen    时间: 2013-8-21 11:07
forward 发表于 2013-8-21 09:00
重现编辑的你帖子,重新选择类型

改完了。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2