如何仅通过调用OutofOrder来进一步简化InOrder代码?

问题描述

尝试找到一种简化inOrder代码的方法时遇到麻烦,因此只对OutofOrder进行了一个单一的调用。我很难找到拨打电话的方法...

public class InOrder {
//Don't change this
public boolean OutOfOrder(int n1,int n2,int n3) {
return (n1 > n2) || (n2 > n3);
}

//The original and messy InOrder,leave this as an example of what not to do
public boolean inOrder(int n1,int n3) {
if (n2 > n1) {
  if (n3 > n2) {
    return true;
  } else {
    return false;
  }
} else if (n2 == n1) {
  if (n3 == n1) {
    return true;
  } else {
    return false;
  }
} else {
  return false;
}
}

//The new and improved InOrder for part 5,call OutOfOrder
public boolean inOrder5a(int n1,int n3) {
return true; //replace this
}
}

解决方法

如果要对结果求反,可以这样:

public boolean inOrder(int n1,int n2,int n3) {
    return !OutOfOrder(n1,n2,n3);
}
,

除了Cyril的答案外,您可以通过取反InOrder中的逻辑语句来获得新的OutOfOrder

OutOfOrderp v q(读取:p或q)
其中:

  • pn1 > n2,并且
  • qn2 > n3

~(p v q) = ~p ^ ~q(读取:不是p而不是q)

所以:

  • ~pn1 <= n2(与n1 > n2相反),并且
  • ~qn2 <= n3(与n2 > n3相反)

因此您可以将InOrder重写为

return (n1 <= n2) && (n2 <= n3)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...