CTOCIO IT专家网

天极传媒 比特网 | 天极网 | IT专家网 | IT商网 | 52PK游戏网 | 手机天极 | IT分众 |
IT专家网搜索

您现在的位置: IT专家网 > Web服务子站 > 技巧

JAVA-在分支处理时遗漏条件

作者: 黑咖啡,  出处:IT专家网, 责任编辑: 李春禹, 
2008-01-02 14:10
  通过判断评价值为真的行各命题的真伪,就可以按三个命题被分解的形式确认条件式C是否表达了我们的的意图。为了编写else if 或者 else语句,从而避免条件遗漏时,只要针对评价值为假的行编写条件表达式即可。有代表性的例子是变量值的变化,文件读写等。

  ① if (x != 1 || x != 2)

  ② if (! (x == 1 && x == 2))

  对于①来说,很难一眼就断定是个Bug。但是, ②呢,一眼就可以看出来“x 等于 1,并且等于2”是个Bug。

  下面,设想一下返回真假值的情况。这时,如果做一个方法,当P为真时返回一个假的话,就成了“没有不是P的情况”的二重否定,很容易导致解释时的混乱。因此,即使想要检查的条件是P的否定,也最好先写一个判定P的方法,在调用的时候用“if (! isActive())…”这样的否定形来判断。

  利用真值表来整理各种条件及其取值

 

 条件表达式 C: ( x > 0 ) && (( y < z ) || !( z == x))
  X > 0Y < ZZ == X评价值
  TTTT
  TTFT
  TFTF
  TFFT
  FTTF
  FTFF
  FFTF
  FFFF
  注:图中的记号
  T … 真
  F … 假
  针对整数x,y,z,有三个命题(x > 0,y < z,z == x),满足条件式C的是本真值表中评价值为真的那些行。通过判断评价值为真的行各命题的真伪,就可以按三个命题被分解的形式确认条件式C是否表达了我们的的意图。 另外,为了编写else if 或者 else语句,从而避免条件遗漏时,只要针对评价值为假的行编写条件表达式即可。

  参考:布尔操作符 && ,|| 的右边不允许包含有带有副作用(#)的表达式

  &&,||是布尔操作符,右边的操作数并不一定每次都被判断

  ① x && y 的情况,当x为false时,y将不被判断

  ② x || y 的情况,当x为true时,y将不被判断

  因此,对y(右侧操作数)有副作用的表达式是不允许包含的。

  # 使运行环境发生变化的作用。有代表性的例子是变量值的变化,文件读写等。

共2页。 9 1 2

网友评论

笔名 
请您注意:遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。    IT专家网友拥有管理笔名和留言的一切权利。
  • 周排行榜
  • 月排行榜

邮件订阅

       
天极服务 | 关于我们 | 网站律师 | 加入我们 | 联系我们 | 广告业务 | 友情链接 | 我要挑错
All Rights Reserved, Copyright 2004-2008, Ctocio.com.cn
渝ICP证B2-20030003号 如有意见请与我们联系 powered by 天极内容管理平台CMS4i