I have an array of positive/negative ints
int[] numbers = new int[10];
numbers[0] = 100;
numbers[1] = -34200;
numbers[2] = 3040;
numbers[3] = 400433;
numbers
One statement block to initialize and set the closest match. Also, return -1 if no closest match is found (empty array).
protected int getClosestIndex(final int[] values, int value) {
class Closest {
Integer dif;
int index = -1;
};
Closest closest = new Closest();
for (int i = 0; i < values.length; ++i) {
final int dif = Math.abs(value - values[i]);
if (closest.dif == null || dif < closest.dif) {
closest.index = i;
closest.dif = dif;
}
}
return closest.index;
}