亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將多個 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 關注
  • 167 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號