2015-07-10 42 views
-8

我写了下面的括号减少

if (((weight < 160 && (age <= 27 && age >= 22)) 
    && ((height < 72) && ((!isASmoker) && (isMale))) 
    && ((isGoodLooking) && (isAbleToRelocate)))) { 

我可以减少括号?

感谢

+8

是的,你确定可以。你有没有尝试过? –

+2

你只使用'&&',所以是的。基本上,您可以删除除了外括号之外的所有内容。但是你不应该设计这样的'if'子句。这导致不可维护的代码。 – Turing85

+1

为什么首先放置所有括号? https://duckduckgo.com/?q=java+operator+precedence –

回答

3

Turing85's comment正确地指出,你实际上可以删除所有括号,除了外部的

if (weight < 160 && age <= 27 && age >= 22 
     && height < 72 && !isASmoker && isMale 
     && isGoodLooking && isAbleToRelocate ) 

这是parethesis可以使用的最小数量。最大数量是......好吧,几乎是无限的(有限数量,显然,但无限的可能性)。只要您的想法正确无误,您可以添加尽可能多的内容。

1

如果你正确地理解Java的运营商优先级,然后这可以减少到最低限度括号:

if ((weight < 160 && (age <= 27 && age >= 22)) 
&& ( height < 72 && !isASmoker && isMale) 
&& ( isGoodLooking && isAbleToRelocate)) { 

更多参考this

编辑: - 其实,如果你考虑一下,如果用“和”运营商检查,如果第一个是真正的下一个条件ONY条件,这在逻辑上可以进一步降低至

if (weight < 160 && age <= 27 && age >= 22 
&& height < 72 && !isASmoker && isMale 
&& isGoodLooking && isAbleToRelocate) { 
+3

如果认为它可以减少更多,因为它只是和。只有外括号不重要? – LBes

+0

你不需要任何内括号 –

+0

谢谢,原来它甚至没有括号,除了一个 –