gpt4 book ai didi

java - 获取最接近数组中数字的值

转载 作者:IT老高 更新时间:2023-10-28 20:32:07 29 4
gpt4 key购买 nike

我有一个正/负整数数组

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];

这行不通。有什么好的方法可以做到这一点吗?

最佳答案

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_LONGMAX_INT 非常不同!),或者如果您将来想要编写一个泛型任何数据类型的min/max方法。

关于java - 获取最接近数组中数字的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13318733/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com