0

我想知道 java 中是否有一种方法可以将变量作为参数并返回最大整数值,或者我是否应该为此编写自己的方法。在我的程序中,我有 4 个不同的整数,每次调用该方法时都会更改,并且都存储在井字游戏的不同变量(rightDiag、leftDiag、hor 和 vert)中,最后我必须确定哪个具有最高值。是否有任何方法可以将这些变量作为参数并返回所有四个中最大的整数?(或类似的东西)还是我应该编写自己的“最大”方法?

感谢大家!

4

5 回答 5

3

Math.max()适用于 2 个参数。它是这样实现的:

int max(int a, int b) {
  return a > b ? a : b;
}

希望这对您自己的实施有足够的启发。

于 2013-11-01T23:57:51.630 回答
3

如果您准备好使用 Java 8:

int max = IntStream.of(a, b, c, d).max().getAsInt();

但是在 Java 7 中没有这样的东西。

于 2013-11-02T00:02:11.797 回答
1

Math.max只需要两个参数,但可以重复使用:

Math.max(rightDiag, Math.max(leftDiag, Math.max(hor, vert)))

或者,如果您想花哨,可以编写一个带有可变数量参数的方法:

static int max(int... parameters) {
    // left as an exercise
}

并且代码将被parameters视为一个int[]数组,您可以遍历该数组并找到最大的一个。

于 2013-11-02T00:00:17.483 回答
0

有很多方法可以实现这种方法。如果您不想使用大量 if 语句来确定哪个值最高,您可以将所有值存储在一个数组中,循环遍历数组并保留指向数组中最大值的指针,然后返回该值最后的价值。

于 2013-11-02T00:00:39.603 回答
0
static int max(int... args) 
{ //This is one implementation, but for practice, try doing one with a foreach loop instead.
    int result=args[0];
    for(int i=1;i<args.length;i++)
    {
        result=Math.max(result,args[i]);
    }
    return result;
}

然后你可以打电话

int maxValue = max(rightDiag, leftDiag, hor, vert);
于 2013-11-02T00:01:49.523 回答