为了账号安全,请及时绑定邮箱和手机立即绑定

将多个 int 值与 0 进行比较的有效方法

将多个 int 值与 0 进行比较的有效方法

沧海一幻觉 2023-09-20 16:28:35
我正在尝试将三个长度与 0 进行比较,并且想知道是否有比重复“!= 0”更有效/更干净的方法。public static boolean isTriangle(int lengthA, int lengthB, int lengthC) {    if (lengthA != 0 && lengthB != 0 && lengthC != 0) { //is there a shorter/cleaner way to write this?        //do a thing    }    return false;}
查看完整描述

4 回答

?
智慧大石

TA贡献1946条经验 获得超3个赞

您可以使用IntStream和allMatch


if(IntStream.of(lengthA,lengthB,lengthC).allMatch(i->i!=0)) {

     // do a thing

  }

noneMatch或者也使用


IntStream.of(lengthA,lengthB,lengthC).noneMatch(i->i==0)

另一种方法是使用 util 方法


public static boolean isNotZero(int val) {

       return val!=0;

     }

现在简化if条件


if (isNotZero(lengthA) && isNotZero(lengthB) && isNotZero(lengthC)) { 


查看完整回答
反对 回复 2023-09-20
?
慕桂英546537

TA贡献1848条经验 获得超10个赞

你问了三件事;你要求的代码是

  1. 更短

  2. 更高效

  3. 清洁工

我有一个替代方案给你:

if ((lengthA & lengthB & lengthC) != 0)

这是正确的 - 它的作用与您的旧代码相同(它使用按位与)

  1. 更短

  2. 它可能更有效,但只有良好的微基准测试才能证实。即使是这样,也不应该指导您。由于第 3 点,只有当它在使用性能分析工具的应用程序中显示为瓶颈时才应考虑它,而这种可能性非常非常小。

  3. 但它并不干净。我的意思是,这将使您的代码更难以阅读和理解,并且任何维护您的代码的人现在都必须考虑位操作。

任何提议的替代方案很可能也是如此。

您在原始代码中所做的事情已经足够好了;这是人们所理解的,而且很可能是您可以为此目的编写的最简洁的代码。


查看完整回答
反对 回复 2023-09-20
?
森栏

TA贡献1810条经验 获得超5个赞

最佳答案(恕我直言): “甚至不要尝试去猜测优化编译器。” 只需以最准确地指定(对您的人类同胞来说,仅此而已......)您希望计算机执行的操作的方式 指定源代码。不要假设实际提供给硬件的机器指令的实际序列实际上与此相对应。 “这很神奇。真的。”



查看完整回答
反对 回复 2023-09-20
?
www说

TA贡献1775条经验 获得超8个赞

对于Java语言来说,你的代码很好。在 Java 中没有更好的方法来做到这一点。



查看完整回答
反对 回复 2023-09-20
  • 4 回答
  • 0 关注
  • 93 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信