2012-10-23 15 views
6

Ho due numeri. Voglio che il numero più basso sia sottratto da entrambi i valori.Sottraendo il numero più basso da più numeri

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

Quanto segue è un po 'brutto per me, quindi c'è un approccio migliore che potrei fare?

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

Che cosa è che si sta cercando di fare con quei numeri dopo? – phant0m

risposta

11

Questo dovrebbe farlo:

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

Painfuly beautifull !!! – artfullyContrived

3

Si può fare seguente:

x = x - y; 
y = 0; 

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

Che ne dite di questo: -

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

Questo darebbe 'y = -600' piuttosto che' y = 0'. – cspolton

2

In aggiunta alla risposta di Duncan, è possibile utilizzare questo frammento, se vi interessa soltanto il valore che non sta andando a zero dopo la sottrazione:

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

Bello. La risposta è ancora corretta se i due sono uguali (IMO). –

+0

@DuncanJones Certo, ma 'non_zero' sarebbe un termine improprio in questo caso;) – phant0m

+0

@DuncanJones Ho pensato di chiamarlo' most_probably_not_going_to_be_zero': P – phant0m

Problemi correlati