2016-04-28 83 views
-6

使用Java,如果不使用条件,我们如何找到一组3个数字中最大的两个数字。找到两个最大数字3的总和

例如,给定3个数字{2,3,5}

int a = 2; 
int b = 3; 
int c = 5; 

int total; 

总将与C + B = 8

+2

比什么更有效的方法是什么? –

+0

对集合进行排序并获取前两个值。 – SomeJavaGuy

+3

这听起来有点像你把你的作业放在别人身上;没有丝毫的尝试来解决这个难题。你认为你会从中学到什么? – GhostCat

回答

2
List<Integer> data = Arrays.asList(23,6,13); 
Collections.sort(data); 
Collections.reverse(data) 
data = data.sublist(0,2); 
System.out.println(data); 
+2

我可以立即做出更高效的工作:不要反转,并使用'data.sublist(1,3)'。或者,当然可以用反向自然顺序比较器进行分类。 –

+0

@AndyTurner true。但是这很清楚发生了什么。 – f1sh

+0

所有这些方法都使用里面的'if'。我想这个问题关于某些没有使用条件的东西(比如if/while/etc)。似乎有一些调查可能的解决方案,为更简单的情况下这里http://stackoverflow.com/questions/476800/comparing-two-integers-without-any-comparison –

0

一条线的值来替换:

int biggest = (a > b ? a : b) > c ? (a > b ? a : b) : c; 

两行:

int firstStep = (a > b ? a : b); 
int biggest = firstStep > c ? firstStep : c; 
0

的Java 8:

int max = Arrays.stream(numbers).max().getAsInt(); 
int sec_max = Arrays.stream(numbers).filter(i -> i != max).max().getAsInt(); 
相关问题