如何创建获取 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个int
s
如果两个元素都最大怎么办?我想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 方法?的主要内容,如果未能解决你的问题,请参考以下文章