如果 Java 中的其他逻辑很复杂



有三个if语句:

if (!(a == 0 && b == 0)) {...}

if (!(a == 0 && b != 0)) {...}

if (!(a != 0 && b != 0)) {...}

我想将它们组合在一个代码块中,例如方法。

如果一个语句已经运行,我不希望其他语句运行。如果我想避免提出一些好的逻辑,有一些解决方法,但我想知道是否有一种漂亮的方法来编写它。

if (!(a == 0 && b b == 0)) {...}

真值表

a b r
z n T 
n n T 
z z F
n z T

if (!(a == 0 && b b != 0)) {...}

真值表

z n F
n n F 
z z T
n z T

if (!(a != 0 && b b != 0)) {...}

真值表

z n T
n n F
z z T
n z T

常见案例

n z T

所以适用于所有 3 个条件的结果是

a != 0 && b == 0

请注意:所有 3 个条件都完全不同,这只有在您想要执行的情况下才有效,如果

(第一个&&第二个&&第三个)是true

自行验证所有案例

(z = 零,

n = 非零,a,b 变量,r = 结果,T = 真,F = 假)

最简单的

表达方式:

public int foo(boolean a, boolean b) {
  int result;
  if (a) {
    if (b) { result = 1; }
    else { result = 2; }
  else {
    if (b) { result = 3; }
    else { result = 4; }
  return result;   
}

(请注意,这会分别评估 A 和 B 一次,这是您可以在此处期望的最小值)

为了让@DavidWallace满意,以下是对原始问题的特定形式的翻译:

public int foo(int a, int b) {
  int result;
  if (a==0) {
    if (b==0) { result = 1; }  // or whatever should happen, not specified in the question
    else { result = 2; }
  else {
    if (b==0) { result = 3; }
    else { result = 4; }
  return result;   
}

只是为了重新表达你的问题。 你说如果一个块运行,其他块不应该运行。 所以当你写的时候

if (!(a == 0 && b == 0)) {...}
if (!(a == 0 && b != 0)) {...}
if (!(a != 0 && b != 0)) {...}

你的意思是

if (!(a == 0 && b == 0)) { 
     // first ...
}
else if (!(a == 0 && b != 0)) {
     // second ...
}
else if (!(a != 0 && b != 0)) { 
     // third ...
}

但这相当于

if (a != 0 || b != 0) { 
    // first ... 
}
else if (b == 0) { 
    // second ... 
}

请注意,正如我在评论中所述,第三个...永远无法运行。

相关内容

  • 没有找到相关文章

最新更新