我有代码从键盘读取数字并对它们求和,并在循环终止时输出总和。当输入的数字为负数并且可被2整除或者它是正数且可被3整除时,循环终止。但它无法正常工作。在什么条件下问题在哪里?
while(!(n<0 && n%2==0) || !(n>0 && n%3==0))
答案 0 :(得分:3)
这与否定逻辑表达式有关。最简单的方法是编写一个正面表达式并用!
来否定它:
!((n<0 && n%2==0) || (n>0 && n%3==0))
之后,您可以使用布尔代数规则打开括号:当您打开否定语句时,在每个组件之前添加一个否定,并将 OR 替换为 AND ,反之亦然:
!(n<0 && n%2==0) && !(n>0 && n%3==0)
使用此规则,您可以继续打开括号。
答案 1 :(得分:2)
hidden_field(object_name, method, options = {})
NOT(n为负,n可被2整除)或NOT(n为正,n可被3整除)。
这是一个逻辑错误NOT(A OR B)与(NOT A或NOT B)不相同,它等于NOT A和NOT B.