为什么此逻辑返回“ NOT”?

时间:2019-05-05 18:55:36

标签: java operators

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

我知道此代码块中所有运算符的作用(!不是,&&检查两个操作数是否都为非零,等等),但是我不明白它们在此特定上下文中如何工作。请记住,我是编程的新手。)例如,是否要检查完成和计数值是否都大于零且大于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");

3 个答案:

答案 0 :(得分:3)

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

!(true && 101 > 100)

允许添加括号以显示优先级或运算符

!(true && (101 > 100))

101 > 100是否正确?是的,换句话说,它的值为true,因此我们可以将其替换为:

!(true && true)

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

!(true)

现在,!的否定(true运算符)将其反转为false,这是if的 condition 的最终值,导致其{{1} }分支(将显示“ NOT”)。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

您的条件是否为 如果(done为true并且count大于100)不为true 如果(done为false或count不大于100)。  根据您的逻辑,此条件不正确,因此这就是为什么它返回错误条件的原因