获得最接近数组中数字的值
我有一系列正/负整数
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





