2016-04-28 65 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(); 
相關問題