2016-06-28 94 views
-3

我想添加一个数字到列表中,但只有当数字不是255而不是0时,id才会避免嵌套的if。我必须这样做的代码如下。C#if语句。如果不是a或b

if (!(r == 255 || r == 0)) 
{ 
    rlist.Add(r); 
    listBox2.Items.Add(Math.Floor(r).ToString()); 
} 

但是我仍然越来越255和0添加到列表框,我不明白为什么。任何人都可以指出我做错了什么? 在此先感谢您的帮助。

+5

是'r'双''还是其他浮点类型?如果是这样,你确实知道你没有处理来自计算或类似事件的舍入误差? 'Math.Floor(r)'似乎意味着你期望'r'有一个小数部分。 – adv12

+1

'Math.Floor(r).ToString()'看起来很可疑。你确定r = 255而不是例如255.1? –

+1

关于你的单词选择的进一步评论:你的代码的英文释义是“如果不是a或b”。在你的标题和介绍性句子中,你说“不是a或不是b”,这与代码中的逻辑不同。如果代码显示了您所需的逻辑,我建议编辑标题以阅读“如果不是a或b”,并且您的第一句话读取为“不是255 *和*不是0”。 – adv12

回答

5

正如其他人所提到的,r是浮点数。试试这个:

var rFloor = Math.Floor(r); 
if (!(rFloor == 255 || rFloor == 0)) 
{ 
    rlist.Add(r); // might want to use rFloor here too 
    listBox2.Items.Add(rFloor.ToString()); 
} 
+0

这对OP的理想逻辑做出了一个假设 - 可能是正确的一个,但是我在扣留注释之前不会收到我的赞成票。 – adv12

+0

谢谢你的假设是正确的,我假设你的假设是R不会比255更糟糕。但我忘记在OP中提到这一点 – may19c19

5

我看到的唯一解释是r不是int,而是double或类似的东西。

所以,想象r = 255.3 ...

if (!(r == 255 || r == 0)) // is true, r is not 255 and not 0 

listBox2.Items.Add(Math.Floor(r).ToString()); 

增加"255"作为Math.Floor(255.3)回报255


忘了提示解决方案,TarkaDaal已经提供了一个。

+0

感谢您的快速响应,R不是INT,但它的最大值是255,一个像素的红色值,但我忘了在OP中提到这一点,我对此表示歉意。 – may19c19

相关问题