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

时间:2019-11-15 17:06:17

标签: java arrays minimum

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。

2 个答案:

答案 0 :(得分:1)

两个问题:您没有设置新的最小权限,也没有设置新的索引权限。

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

您需要在新的分钟数中包含-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;
  }

}

答案 1 :(得分:0)

您需要应用Math.abs函数以使差异始终为正。另外,index = i;应该在if块之内。

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