[英]Minimal code, shorten expression
給出以下參數:
boolean a = true ;
boolean b = false ;
boolean c = true ;
我希望此版本的代碼最少:
if ( ( a && ! b) || ( ! a && b) ) {
z1 += 99 ;
}
if (a ^ b) {
z1 += 19 ;
}
if ( ( a && b) || ( ! a && ! b) ) {
z1 += 118;
}
需要修改什么?
第一個條件與第二個條件相同,第三個條件是其他條件的否定,所以我們有
if (a ^ b) {
z1 += 99 + 19 // = 118
} else {
z1 += 118
}
我們可以再次縮短,無論a或b是多少,z1都會增加118,所以我們只有
z1 += 118
如果您將來需要弄清楚類似的事情,那么您可能想要嘗試編寫一張表(所有表在數學上都比較正確,但我可能會更正我),該表顯示了所有可能的輸入及其各自的結果。 編寫表格后,您應該能夠快速識別整體邏輯並可能對其進行簡化。
上面的表格可能看起來像這樣;
a | b | z1
------------------
t | t |
t | f |
f | t |
f | f |
遍歷每一行並將z1的效果寫入列中。 如果可能的話,這應該使您可以輕松確定正在發生的事情以及如何縮短它。
if ( ( a && ! b) || ( ! a && b) ) {
}
您可以使用
if ( a!=b) {
}
if ( ( a && b) || ( ! a && ! b) ) {}
您可以使用
if(a==b){}
if (a ^ b) {}
可以代替它
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.