获得最接近数组中数字的值
我有一系列正/负整数
int[] numbers = new int[10];numbers[0] = 100;
numbers[1] = -34200;
numbers[2] = 3040;
numbers[3] = 400433;
numbers[4] = 500;
numbers[5] = -100;
numbers[6] = -200;
numbers[7] = 532;
numbers[8] = 6584;
numbers[9] = -945;
现在,我想针对此数组测试另一个int,并返回最接近该int的数字。
例如,如果我使用数字,490
我将从数字中取回第4项500
,那么做这种事情的最佳方法是什么?
int myNumber = 490;int distance = 0;
int idx = 0;
for(int c = 0; c < numbers.length; c++){
int cdistance = numbers[c] - myNumber;
if(cdistance < distance){
idx = c;
distance = cdistance;
}
}
int theNumber = numbers[idx];
那不行 有什么好的方法建议吗?
回答:
int myNumber = 490;int distance = Math.abs(numbers[0] - myNumber);
int idx = 0;
for(int c = 1; c < numbers.length; c++){
int cdistance = Math.abs(numbers[c] - myNumber);
if(cdistance < distance){
idx = c;
distance = cdistance;
}
}
int theNumber = numbers[idx];
始终使用要考虑的第一个元素初始化最小/最大函数。使用诸如Integer.MAX_VALUE
或Integer.MIN_VALUE
这样的东西是获得答案的幼稚方式;如果以后再更改数据类型(糟糕,MAX_LONG
而且MAX_INT
有很大不同!),或者将来您想min/max
为
任何 数据类型编写通用方法,它都不会很好。
以上是 获得最接近数组中数字的值 的全部内容, 来源链接: utcz.com/qa/398379.html