Java 求3的两个最大数之和
在Java中,如果不使用if条件,如何找到一组3个数中最大的两个数 例如,给定3个数{2,3,5}Java 求3的两个最大数之和,java,compare,Java,Compare,在Java中,如果不使用if条件,如何找到一组3个数中最大的两个数 例如,给定3个数{2,3,5} int a = 2; int b = 3; int c = 5; int total; 总计将替换为c+b=8的值; List<Integer> data = Arrays.asList(23,6,13); Collections.sort(data); Collections.reverse(data) data = data.sublist(0,2); System.out.p
int a = 2;
int b = 3;
int c = 5;
int total;
总计将替换为c+b=8的值;
List<Integer> data = Arrays.asList(23,6,13);
Collections.sort(data);
Collections.reverse(data)
data = data.sublist(0,2);
System.out.println(data);
收集、分类(数据);
集合。反向(数据)
数据=数据。子列表(0,2);
系统输出打印项次(数据);
一行:
int biggest = (a > b ? a : b) > c ? (a > b ? a : b) : c;
两行:
int firstStep = (a > b ? a : b);
int biggest = firstStep > c ? firstStep : c;
Java 8:
int max = Arrays.stream(numbers).max().getAsInt();
int sec_max = Arrays.stream(numbers).filter(i -> i != max).max().getAsInt();
一种比什么更有效的方法?对集合进行排序并得到前两个值。这听起来有点像是你把作业丢给了别人;你根本不想自己解决这个难题。你认为你会从中学到什么?@Jägermeister更大的问题是我们通过做他的家庭作业可以学到什么:-)这不是我的hw:D。我在为java测试学习。我可以马上让它更“有效”:不要反转,使用
数据。sublist(1,3)
。当然,也可以使用反向自然顺序比较器对其进行排序。@AndyTurner-true。但这很好地说明了发生了什么。所有这些方法都在内部使用“如果”。我想这个问题是关于一些完全没有条件的东西(比如if/while/etc)。这里似乎有一些关于更简单案例的可能解决方案的调查@ArturBiesiadowski,如果不使用,您将如何做出决策?@f1sh我认为这就是使问题变得复杂的原因。我还没有答案,但举例来说,对于两个不同的正整数的简化情况,您可以找到更大的一个(假设无条件符号方法)更大的=a x符号(a/b)+b x符号(b/a);我想只要有足够的技巧,3个整数也可以做类似的事情。另外,我们需要得到无条件的符号,这可能可以通过一些涉及零或无穷大的Math.pow的黑客来完成?