【问题标题】:Circle quadrant and multiple logical operators圆形象限和多个逻辑运算符
【发布时间】:2012-01-11 20:21:41
【问题描述】:

我正在尝试对带有角度和内部三角形的圆进行计算。

是否可以对逻辑运算符进行分组,或者不建议这样做。

EX:如果角度在圆的第 1 象限(>315 度但 45 度或更小),或在第 3 象限(> 135 度但小于

我的基本代码适用于:

if (angle > 315 && angle <= 45)
{
    //do codeA
}
else if (angle > 135 && angle <= 225)
{
    //do codeA
}

等等

我想做的是:

if ((angle > 315 && angle <= 45) || (angle > 135 && angle <= 225)
{
    //do codeA
}
else if ((angle > 45 && <= 135) || (angle > 225 && angle <= 315)
{
    //do codeB
}

我正在考虑而不是查看 switch 运算符,因为我一直在严重未充分利用它们。

我的两个问题是:

  1. 不管这是否是最好的方法,是否可以按照我想要的方式对逻辑运算符进行分组(if ((A == 1 &amp;&amp; B == 1) || (A == 2 &amp;&amp; B == 4))

  2. switch 语句是否是执行此操作的正确方法?

【问题讨论】:

  • 你做对了。
  • ((A == 1 && B == 1)||(A==2 && B==4)) 你的意思是?
  • 对其进行了测试并使其工作。上面的答案是正确的,由于某种奇怪的原因,几个月前它对我不起作用。我会责怪编程新手。

标签: c# if-statement switch-statement operators


【解决方案1】:

传统上

  1. 第一象限 0-90
  2. 第二象限 90-180
  3. 第三象限 180-270
  4. 第四象限 270-360。

所以如果 A 是角度,当你将它除以 180 时,你在第一或第三象限时得到的余数是 0-90。 p>

因此您可以简单地使用模运算符来简化您的条件。

if (  (A % 180) < 90 )
{
  //first or third quad
}
else
{
  //second or fourth quad
}

请根据您的角度范围和边界条件

进行自定义

您不能在此处使用 switch 语句,因为您使用的是不等式比较

【讨论】:

  • 感谢您的回答。 . . “我可以做A吗?” “你可以做B。” “但是我可以做 A 吗?”
  • 如果你在这里问 我可以做 A 并且 A 可以简化,人们会告诉你...
  • 问题是我没有使用圆形象限进行圆形计算,我正在寻找使用 coh 计算三角形的哪一侧,这需要这些角度让我知道哪个长度是相邻的.这就是为什么我想要回答 A 而不是你的 B。
猜你喜欢
  • 2016-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-06
  • 1970-01-01
  • 2020-12-20
  • 1970-01-01
相关资源
最近更新 更多