0

下面是我的代码,但该if语句不起作用。

int i = 0;
while (true) {
  long l = fibonacci(i++);
  if (l < 0L && l > Long.MAX_VALUE) {
    System.out.println("over");
    break;
}

}

我如何知道该long值是否已达到Long.MAX_VALUE

4

1 回答 1

10

如果一个long值超出了 a 的界限long,那么就会发生溢出。由于此溢出,下一个斐波那契数将显示为负数。所以检查小于零的数字是正确的。但是您不需要检查它是否大于Long.MAX_VALUE,因为 nolong可以满足该条件。这&&是另一个错误。一个数字不能同时小于零和大于该(任何)正数。

您只需要:

if (l < 0L) {
于 2013-10-15T18:13:38.397 回答