获得最接近数组中数字的值

我有一系列正/负整数

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_VALUEInteger.MIN_VALUE这样的东西是获得答案的幼稚方式;如果以后再更改数据类型(糟糕,MAX_LONG而且MAX_INT有很大不同!),或者将来您想min/max

任何 数据类型编写通用方法,它都不会很好。

以上是 获得最接近数组中数字的值 的全部内容, 来源链接: utcz.com/qa/398379.html

回到顶部