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。
答案 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;