2012-10-23 19 views
6

Mam dwie liczby. Chcę, aby niższa liczba była odejmowana od obu wartości.Odejmowanie najniższego numeru z kilku numerów

x: 1000 
y: 200 
=> result: x = 800 and y = 0. 

Poniższe jest dla mnie brzydkie, więc czy istnieje lepsze podejście, które mógłbym zrobić?

if (x <= y) { 
    y = y - x; 
    x = 0 
} else { 
    x = x - y; 
    y = 0; 
} 
+0

Co to starasz się zrobić z tych numerów potem? – phant0m

Odpowiedz

11

ten powinien zrobić:

int min = Math.min(x, y); 
x -= min; 
y -= min; 
+0

Painfuly beautifull !!! – artfullyContrived

3

można zrobić następujące:

x = x - y; 
y = 0; 

if(x<0) 
{ 
    y = -x 
    x = 0; 
} 
1

Jak o tym: -

int lower = x < y ? x : y; 
x -= lower; 
y -= lower; 
0
x=x-y; 
y=y-x; 
if(x<0) 
    x=0; 
else 
    y=0; 
+0

Dałoby to 'y = -600' zamiast' y = 0'. – cspolton

2

Jako dodatek do odpowiedzi Duncana, można użyć tego fragmentu, jeśli tylko dbają o wartości, która nie będzie wynosić zero po odjęciu:

int non_zero = Math.abs(x - y); // unless the two are equal of course 
+0

Nice. Odpowiedź jest nadal poprawna, jeśli obie są równe (IMO). –

+0

@DuncanJones Oczywiście, ale 'non_zero' byłoby mylące w tym przypadku;) – phant0m

+0

@DuncanJones Ale rozważałem nadanie mu nazwy' most_probably_not_going_to_be_zero': P – phant0m