class Eq { int id; int level; } public int getEquipId(Vector veq, int tLevel) { int id=0; ...... return id; } 求的是veq中所有对象的level最接近tLevel的id. 比如,我想求 最接近 35这个数的ID. 有这样一些对象[1,22][2,33][3,44][4,55] 从这些对象中 求出的结果是2. 请问具体算法。
[Quote=引用 1 楼 spiniper 的回复:]
将两个数相减得到一些数,然后这些数字的绝对值排序,再得到最小的那个数对应的数。
[/Quote]
public int getEquipId(Vector<Eq> veq, int tLevel) {
int id=0;
int []data = new int[veq.size()];
for(int i=0;i<veq.size();i++){
data[i] = Math.abs(veq.get(i).level - tLevel);
}
int pos =0;
int min = data[0];
for(int n=0;n<data.length;n++){
if(data[n]<min){
min = data[n];
pos = n;
}
}
id = veq.get(pos).id;
return id;