一些我的正/负整数得到最接近的值在阵列
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
,我会从号码500
中收回项目#4,做这种事情的最佳方法是什么?
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];
这是行不通的。任何建议一个好的方法来做到这一点?
'cdistance = numbers [c] - myNumber'。你没有拿到绝对的价值。 – irrelephant
你需要从距离等于一些非常大的数字开始。否则,'cdistance'永远不会比它小。此外,您需要在比较之前取得'cdistance'的绝对值。 –