如何获得差异最小的值的索引?

How to get the index of the value with the smallest difference?

int[] b = new int[4];
int min = 10000;
int index = 0;
b[0] = arr[0][0]; //b[0]=> 
b[1] = arr[1][0]; //b[1]=> 
b[2] = arr[2][0]; //b[2]=> 
b[3] = arr[3][0]; //b[3]=> 

for (int i = 0; i < b.length; i++) {
  if(b[i]>r)
    b[i]=b[i]-r;
  else
    b[i]=r-b[i];
  if (b[i] < min) {
    min = b[i] ;
    index = i;
  }}
return index;

我想找到最接近我的数字 r 的索引。 例如,增量最小的地方 谁能帮帮我?

这里有一个例子:b[0]=1, b[1]=2,b[2]=3,b[3]=4 r=5 ---> 最小差异是 1 (5-b[3]) 所以我想要的索引是 3.

两个问题:您没有正确设置新的最小值,也没有正确设置新的索引。

for (int i = 0; i < b.length; i++) {
  if (b[i]-r < min)
    min = b[i];
  index = i;
}

你需要在新的 min 中包含 -r,你需要把 index = I; 放在同一个块中,否则索引将永远是 b.length - 1

for (int i = 0; i < b.length; i++) {
  var dist = Math.abs(b[i]-r);
  if (dist < min) {
    min = dist;
    index = i;
  }

}