【问题标题】:Why does this logic return "NOT"? [closed]为什么这个逻辑返回“NOT”? [关闭]
【发布时间】:2019-05-05 18:55:36
【问题描述】:

我在测验中收到了这个问题,但我不完全确定它为什么返回“NOT”。

我知道这段代码中所有运算符的作用(!不是,&& 检查两个操作数是否非零等),但我不明白它们在这个特定上下文中是如何工作的。(请记住,我对编程很陌生。)例如,是否检查 done 和 count 是否都是大于零和大于 MAX 的值?

//Evaluate the following program logic and determine if the output string is "Completed" or "NOT".

int MAX = 100;
int count = 101;
Boolean done = true;

if(!(done && count > MAX))
  Console.WriteLine("Completed");
else
  Console.WriteLine("NOT");

【问题讨论】:

  • 你确定'java'标签是正确的吗?看起来像 C# 代码...
  • 它是在一个java测试所以它应该是java代码?
  • @BorLaze 没有理由这不能是 Java 代码(除了缺少的 ;)。
  • @AndyTurner,当然,但是 Java 没有开箱即用的 class.method Console.WriteLine; C# 有。此外,方法WriteLine 不遵循Java 命名约定。这是我发表评论的一个原因。
  • 顺便说一句,没有与零比较(“...两个值都大于零...”)

标签: java operators


【解决方案1】:

让我们一步一步来。当我们将值放入 !(done && count > MAX) 时,我们得到 ​​p>

!(true && 101 > 100)

让我们添加括号以显示优先级或运算符

!(true && (101 > 100))

101 > 100 正确吗?是的,换句话说,它被评估为true,所以我们可以用它替换它:

!(true && true)

这里true && true也被评估为true,所以我们得到

!(true)

现在,true 的否定(! 运算符)将其反转为 false,这是 if 的 条件 的最终值,导致其 else 分支(打印 NOT)为被执行。

【讨论】:

    【解决方案2】:

    !NOT 运算符所以!(true && true) == false

    【讨论】:

      【解决方案3】:

      你的 if 条件是 如果 (done 为真且计数大于 100 ) 不为真则等价 如果 (done 为假或计数不大于 100) 。 根据您的逻辑,此条件不正确,这就是它返回错误条件的原因

      【讨论】:

        猜你喜欢
        • 2013-01-21
        • 2015-08-10
        • 1970-01-01
        • 2017-07-27
        • 1970-01-01
        • 2011-04-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多