【问题标题】:Java value of if statementsif 语句的 Java 值
【发布时间】:2010-10-27 09:36:26
【问题描述】:

在 Java 中,我可以返回一个布尔值吗:

public boolean areBothEven(int i, int j) {
    return (i%2 == 0 && j%2 == 0);
}

或者我需要用 if 包围语句,然后适当地返回 true 和 false?

【问题讨论】:

  • 是的..这是完全可以接受的代码。
  • 您自己回答这个问题需要 0.0001 秒...您是否运行了代码但出了什么问题?
  • @pek 真正的代码比我的例子复杂。我想检查一下我没有过多地假设语言,以便找出问题出在哪里。
  • 你甚至不需要外括号。

标签: java boolean


【解决方案1】:

不,事实上,像return xxx ? true : false;if (xxx) return true; else return false; 这样的操作通常被认为是多余的,因此是不好的风格。在您的情况下,您甚至可以通过避免 && 来稍微加快速度(这可能会导致分支错误预测):

return (i | j)%2 == 0;

【讨论】:

  • @Multiplexer:我不认为对整数的位运算是可读性很强的代码。
  • 我不认为那更具可读性。也许是因为我从来都不是位中的“低级”编码员,但按位运算涉及思考,而原始操作很容易。
  • @Thilo,@Visage:同意。我暂时不会建议这是最易读的解决方案,但我认为它是您必须在名为areBothEven 的函数中读取的唯一代码段,这是完全可以接受的。不过,我更喜欢bothAreEven 这个名字。谓词应该读起来像肯定断言,这样if (bothAreEven(x, y)) ... 这样的语句读起来更自然。
【解决方案2】:

表达式是布尔类型,因此适合返回。您不需要使用 if 语句。

【讨论】:

  • 只是为了澄清@Visage 的回答——“是的,你可以做你正在做的回报,不,你不需要做 if”:)
【解决方案3】:

语法正确。但是,零既不是偶数也不是奇数,不是吗? 所以,可能是

return i !=0 && j !=0 && i%2 == 0 && j%2 == 0;

【讨论】:

  • 我觉得这和问题是一样的。但是为什么要把事情复杂化。无论如何,如果 i 为偶数或 i 为 0,则 i%2 == 0。无需再考虑添加条件。
  • 零既不是偶数也不是奇数???怎么样?当然,零是偶数。 en.wikipedia.org/wiki/Parity_of_zero
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多