如何创建获取 4 个数字并返回最大数字的 max 方法?

Posted

技术标签:

【中文标题】如何创建获取 4 个数字并返回最大数字的 max 方法?【英文标题】:How to create max method that gets 4 numbers and returns the maximum number? 【发布时间】:2015-02-02 06:38:36 【问题描述】:

我正在尝试构建一个可以获取 4 个数字并返回最大数量的方法。

我尝试编写得到 4 个数字的代码,但这不起作用:

输入输出:

double a = Math.max(10, 5, 4, 3);
    System.out.println(a);

public static int max(int a, int b, int c, int d) 
    if (a > b && a > c && a > d)
        return a;
    if (b > a && b > c && b > d)
        return b;
    if (c > a && c > b && c > d)
        return c;
    if (d > b && d > c && d > a)
        return d;

【问题讨论】:

使用Math.max(Math.max(Math.max(a,b),Math.max(c,d))) 你也可以用int[]代替4个ints 如果两个元素都最大怎么办?我想max(2, 3, 4, 4) 应该是 4,但是你的代码应该如何得到这个结果? 请(您以前被告知过吗?)更加具体。 “不工作”不是问题描述。您需要准确地告诉我们您的代码与预期的不同之处。您还需要准确引用任何错误消息。 【参考方案1】:

我会通过引入变量max 来简化这一点:

public static int max(int a, int b, int c, int d) 

    int max = a;

    if (b > max)
        max = b;
    if (c > max)
        max = c;
    if (d > max)
        max = d;

     return max;

您也可以使用Math.max,就像suggested by fast snail,但由于这似乎是家庭作业,我更喜欢算法解决方案。

Math.max(Math.max(a,b),Math.max(c,d))

【讨论】:

Patrick,我原以为你在 *** 上的经验太丰富了,无法为他们解决人们的家庭作业。 :-)【参考方案2】:

尝试Math.max,如下所示:

return Math.max(Math.max(a, b), Math.max(c, d));

【讨论】:

【参考方案3】:

您总是可以使用这样的方法,它可以根据需要对任意数量的整数起作用:

public static Integer max(Integer... vals) 
    return new TreeSet<>(Arrays.asList(vals)).last();

调用,例如:

System.out.println(max(10, 5, 17, 4, 3));

【讨论】:

【参考方案4】:
public static int max(Integer... vals) 
    return Collections.max(Arrays.asList(vals));

【讨论】:

【参考方案5】:
if (c > a && c > b && c > d)
    return d;

这里你返回的是 d 而不是 c。

【讨论】:

添加更多描述以便其他人可以理解【参考方案6】:

另一种方法...

public static int max(int a, int b, int c, int d) 
    if (a > b && a > c && a > d)
        return a;
    if (b > c && b > d)
        return b;
    if (c > d)
        return c;
    return d;

【讨论】:

【参考方案7】:
public static Integer max(Integer... values)

     Integer maxValue = null
     for(Integer value : values)
         if(maxValue == null || maxValue < value)
              maxValue = value;
     return maxValue;

【讨论】:

这胜过其他关于 (a) 处理任意数量的值和 (b) 也接受值数组作为输入的建议,这使得它比只接受四个整数的方法灵活得多。 内存性能如何?不必要的可变参数数组创建和不必要的装箱。 OP问的也不是。【参考方案8】:
public static int max(int a, int b, int c, int d)
        return (a>b && a>c && a>d? a: b>c && b>d? b: c>d? c:d);
    

【讨论】:

【参考方案9】:
public static int max(int a, int b, int c, int d) 

   int tmp1 = a > b ? a : b;
   int tmp2 = c > d ? c : d;

   return tmp1 > tmp2 ? tmp1 : tmp2;

【讨论】:

【参考方案10】:
private int max(int... p)

    int max = 0;
    for (int i : p) 
        max = i > max ? i : max; 
    
    return max;


【讨论】:

以上是关于如何创建获取 4 个数字并返回最大数字的 max 方法?的主要内容,如果未能解决你的问题,请参考以下文章

如何找到最多2个数字?

java如何选取list中最大值

x86 程序集 - 4 个给定数字中的 2 个最大值

python list max() 方法只返回 3 位数字?

为啥 math.max() 在整数数组上返回 NaN?

C语言,设计函数int max(int num); 函数功能:依次分解出正整数num的各位数字,返回最大数字