2012-10-23 52 views
6

我有两个数字。我想从两个值中减去较低的数字。从几个数字中减去最小数字

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

以下对我来说有点丑,那么有没有更好的方法可以做到这一点?

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

什么是你想用这些数字来做到这一点之后? – phant0m

回答

11

这应做到:

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

痛苦美丽! – artfullyContrived

3

你可以做到以下几点:

x = x - y; 
y = 0; 

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

这个怎么样: -

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

这会给'y = -600'而不是'y = 0'。 – cspolton

2

作为除了邓肯的回答,您可以使用此代码片段,如果你只关心是不会减法后为零值:

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

不错。如果两者相等(IMO),答案仍然正确。 –

+0

@DuncanJones当然,但是'non_zero'在这种情况下会是一个误用;) – phant0m

+0

@DuncanJones虽然我确实考虑给它命名为'most_probably_not_going_to_be_zero':P – phant0m