【问题标题】:Why is the "not" operator not working (boolean)?为什么“not”运算符不起作用(布尔值)?
【发布时间】:2020-06-18 22:47:21
【问题描述】:

while (isWeatherBeautiful && isDaylight && !(Rain) || temperature >= 60)

我是否正确放置了 (!) 运算符和所有括号?所有运算符都可以正常工作并做他们应该做的事情,但是“not”运算符无论“true”还是“false”都会一直循环。有什么提示吗?

这是作业...这意味着我必须以某种方式使用 (!)。否则我就把它扔掉。

【问题讨论】:

  • Operator precedence 表示isWeatherBeautiful && isDaylight && !(Rain) || temperature >= 60(isWeatherBeautiful && isDaylight && !Rain) || (temperature >= 60) 相同。这就是你想要表达的意思吗? --- 我对此表示怀疑,因为isWeatherBeautiful && !Rain 是多余的,除非你认为下雨的时候天气会很美。

标签: java while-loop boolean


【解决方案1】:

一些规则

  • 这种类型的表达式是从左到右计算的。
  • 使用&& 的表达式作为一个组进行评估,因此a || b && c
    被评估为a || (b && c) 而不是(a || b) && c

现在考虑你的问题,这样想。

if (a && b && !c || d) {
   // do something
}
  • 如果d 永远为真,则表达式将为真。
  • 如果d 为假,则表达式只有在a, b, and !c 也为真时才为真。
  • 因此,如果天气好,是白天,不下雨,那么无论温度如何,都是如此。
  • 如果温度 >= 60,则无论其他标准如何,它也是如此。

我不能告诉你如何纠正它,因为我不知道你的标准是什么。但这是一种可能性。

while (isWeatherBeautiful || (isDaylight && !(Rain) && temperature >= 60))
  • 如果天气很好,那么其他一切都不重要,所以它会独立存在
  • 如果是白天,不下雨,而且比较暖和,那也是个好日子

这里是 | 的真值表(或) 和 & (和)

 +---+---+-------+      +---+---+-------+      
 | A | B | A | B |      | A | B | A & B |      
 +---+---+-------+      +---+---+-------+      
 | T | T |   T   |      | T | T |   T   |      
 +---+---+-------+      +---+---+-------+      
 | T | F |   T   |      | T | F |   F   |      
 +---+---+-------+      +---+---+-------+     
 | F | T |   T   |      | F | T |   F   |      
 +---+---+-------+      +---+---+-------+      
 | F | F |   F   |      | F | F |   F   |      
 +---+---+-------+      +---+---+-------+      

【讨论】:

  • 您没有解释主要问题,即operator precedence&&|| 之前,就像*+ 之前一样。
  • 关于如何将 (!) 用于此(或类似内容)的任何想法?我知道这在我的示例中是多余的,但我必须以某种方式使用所有三个运算符“and, or and not”。不一定是天气问题。
  • @Michael 查看我的更新答案以及可能的建议。
  • 谢谢,它有效。逻辑思维不是我的强项。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-02-27
  • 1970-01-01
  • 2015-08-22
  • 1970-01-01
  • 1970-01-01
  • 2016-05-01
  • 2012-04-12
相关资源
最近更新 更多