关于简单的逻辑判断

sk4ksdksk 2009-08-12 10:21:29
要求
                [SQL] SELECT count(std_no) FROM SREG400 
WHERE STD_NO = :ARG_STD_NO
AND MOD_CD IN ('U0117010', 'U0117020') AND TRET_ST = 'U0121010'


代码

if(modCd=="U0117010" || modCd="U0117020" && modResnCd="U0121010"){

不知道这么写对不对,modCd如果值是'U0117010', 'U0117020'其中一个,并且modResnCd是U0121010这个值的时候就要进入这个if语句中,,不知道我这么写的逻辑代码对不对
...全文
170 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
lovecj6185 2009-08-12
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 sk4ksdksk 的回复:]
现在我想做的效果是
if(modCd1=="U0117010" || modCd2="U0117020" && modResnCd="U0121010"){
modCd1或者modCd2其中一个为true,并且modResnCd也为ture才进入if模块。。。是不是我这么写错了


[/Quote]

那就是
if ((modCd1=="U0117010" || modCd2="U0117020") && modResnCd="U0121010"){
binghe1979 2009-08-12
  • 打赏
  • 举报
回复
现在我想做的效果是
if(modCd1=="U0117010" || modCd2="U0117020" && modResnCd="U0121010"){
modCd1或者modCd2其中一个为true,并且modResnCd也为ture才进入if模块。。。是不是我这么写错了

对,你这么写错了,正确方法是
if((modCd1=="U0117010" || modCd2="U0117020") && modResnCd="U0121010"){

或条件要用括号括起来代表一个条件,否则或条件是顺序判断,第一个为真就不继续向后判断了
xieyuanxi 2009-08-12
  • 打赏
  • 举报
回复
不管以后怎么写代码,记得好的习惯是不用去背优先级,用“()”来括起来!
zhanggc1001 2009-08-12
  • 打赏
  • 举报
回复
&&优先级大于||
所以if(modCd=="U0117010" || modCd="U0117020" && modResnCd="U0121010")
相当于是if(modCd=="U0117010" || (modCd="U0117020" && modResnCd="U0121010"))
按照你要的结果这样写是错误的
应该的if((modCd=="U0117010" || modCd="U0117020") && modResnCd="U0121010")
sk4ksdksk 2009-08-12
  • 打赏
  • 举报
回复
现在我想做的效果是
if(modCd1=="U0117010" || modCd2="U0117020" && modResnCd="U0121010"){
modCd1或者modCd2其中一个为true,并且modResnCd也为ture才进入if模块。。。是不是我这么写错了

lovecj6185 2009-08-12
  • 打赏
  • 举报
回复
||是逻辑或运算

if(modCd=="U0117010" || modCd="U0117020" && modResnCd="U0121010"){
里面

如果
modCd=="U0117010" 判断为true
那末后面的都不会被执行
直接进入if块里
sk4ksdksk 2009-08-12
  • 打赏
  • 举报
回复
那么问一下,这个
if(modCd=="U0117010" || modCd="U0117020" && modResnCd="U0121010"){

if((modCd=="U0117010" || modCd="U0117020") && modResnCd="U0121010"){
这个,只是多加了一个括号有区别吗

还有就是
位置变一下,让&&这个在前面||这个在后面,
kakagui 2009-08-12
  • 打赏
  • 举报
回复

if((STD_NO=ARG_STD_NO)
&&(modCd=="U0117010" || modCd="U0117020" )
&&(TRET_ST = 'U0121010')){}


直接翻译得出的结果!
qqxuexixuexi 2009-08-12
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 xieyuanxi 的回复:]
不管以后怎么写代码,记得好的习惯是不用去背优先级,用“()”来括起来!
[/Quote]


jinxfei 2009-08-12
  • 打赏
  • 举报
回复
大家都忘了Equals和良好的代码风格吗,前一阵子还有人讨论来着:


if (("U0117010".equals(modCd) || "U0117020".equals(modCd)) && "U0121010".equals(modResnCd)){

  • 打赏
  • 举报
回复
&&优先级大于||
所以if(modCd=="U0117010" || modCd="U0117020" && modResnCd="U0121010")
相当于是if(modCd=="U0117010" || (modCd="U0117020" && modResnCd="U0121010"))
按照你要的结果这样写是错误的
应该的if((modCd=="U0117010" || modCd="U0117020") && modResnCd="U0121010")
KingZChina 2009-08-12
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 minthinking 的回复:]
支持用(),这样代码更易读!
[/Quote]

同意这个回复
KingZChina 2009-08-12
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 minthinking 的回复:]
支持用(),这样代码更易读!
[/Quote]

同意这个回复
MinThinking 2009-08-12
  • 打赏
  • 举报
回复
支持用(),这样代码更易读!

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧