获取与数组中的数字最接近的值

2024-03-08

我有一个正/负整数数组

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我会从数字中取回项目#4500做这样的事情最好的方法是什么?

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 http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html#MAX_VALUE or Integer.MIN_VALUE http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html#MIN_VALUE是一种幼稚的获取答案的方式;如果您稍后更改数据类型,它就不能很好地保持(哎呀,MAX_LONG and MAX_INT非常不同!)或者如果您将来想要编写一个通用的min/max方法用于any数据类型。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取与数组中的数字最接近的值 的相关文章

随机推荐