我编写了以下构造函数,它获取了2个参数,如果值(x或y)为负,它将初始化为零。
public Point1 ( int x , int y )
{
//if one or more of the point values is <0 , the constructor will state a zero value.
if (x < 0)
{
_x = 0;
}
else
_x=x;
if (y < 0)
{
_y = 0;
}
else
_y = y;
}
如果它可以......我只需要它是极简主义。
答案 0 :(得分:9)
_x = Math.max(x,0);
_y = Math.max(y,0);
答案 1 :(得分:4)
_x = Math.max(0, x);
_y = Math.max(0, x);
或
_x = x < 0 ? 0 : x;
_y = y < 0 ? 0 : y;
答案 2 :(得分:2)
_x = (x<0)?0:x ;
_y = (y<0)?0:y ;
答案 3 :(得分:1)
_x = x < 0 ? 0 : x;
_y = y < 0 ? 0 : y;
答案 4 :(得分:1)
怎么样......
_x = (x < 0) ? 0 : x;
_y = (y < 0) ? 0 : y;
答案 5 :(得分:1)
这可能对您有用:
public Point1 (int x, int y)
{
_x = x < 0 ? 0 : x;
_y = y < 0 ? 0 : y;
}
答案 6 :(得分:1)
尝试:
_x = Math.max(0, x);
_y = Math.max(0, y);
答案 7 :(得分:1)
如果你想使用尽可能少的字符,可能会像:
public Point1(int x, int y) {
_x = Math.max(0,x);
_y = Math.max(0,y);
}
答案 8 :(得分:0)
编写一个函数NegativeToZero
并改为使用它:
_x = NegativeToZero(x);
_y = NegativeToZero(y);
答案 9 :(得分:0)
该代码非常简单。如果你正在寻找更干净的代码(这取决于开发人员)我总是使用三元运算符来处理简单的if-else语句:
_x = (x < 0) ? 0 : x;
_y = (y < 0) ? 0 : y;
如果x&lt; 0,使用0,否则使用x
答案 10 :(得分:0)
public Point1 ( int x , int y ) {
if(x < 0 ) x = 0;
if( y < 0) y = 0;
_x = x;
_y = y;
}
或
public Point1 ( int x , int y ) {
_x = x < 0 ? 0 : x;
_y = y < 0 ? 0 : y;
}
答案 11 :(得分:0)
我真正喜欢的是:
public Point1(int x, int y) {
this.x = nonnegative(x);
this.y = nonnegative(y);
}
其中:
public static int nonegative(int value) {
if (value < 0) {
throw new IllegalStateException(
value + " is negative"
);
}
return value;
}
如果隐藏构造函数并添加静态创建方法,那就更好了(如果更详细一点)。当然,不应该将负面地毯清扫创建方法引入构造函数中。
答案 12 :(得分:0)
这只是为了好玩(没有条件,当然也没有效率)。如果有条件,它会最小化:)
int temp = (x&(~Integer.MAX_VALUE))>>>(Integer.SIZE - 6);
_x = (x >>> (temp - (temp >> 5))) - (temp >> 5);
轻微改进:
int temp = (x&(~Integer.MAX_VALUE))>>>(Integer.SIZE - 6);
_x = (x << (temp - (temp >> 5))) & Integer.MAX_VALUE;