obter o valor mais próximo de um número no array

Eu tenho uma matriz de ints positivos / negativos

int[] numbers = new int[10];
numbers[0] = 100;
numbers[1] = -34200;
numbers[2] = 3040;
numbers[3] = 400433;
numbers[4] = 500;
numbers[5] = -100;
numbers[6] = -200;
numbers[7] = 532;
numbers[8] = 6584;
numbers[9] = -945;

Agora, gostaria de testar outro int contra esse array e retornar o número mais próximo do int.

Por exemplo, se eu usasse o número490 Eu voltaria item # 4 de números500 Qual é a melhor maneira de fazer algo assim?

int myNumber = 490;
int distance = 0;
int idx = 0;
for(int c = 0; c < numbers.length; c++){
    int cdistance = numbers[c] - myNumber;
    if(cdistance < distance){
        idx = c;
        distance = cdistance;
    }
}
int theNumber = numbers[idx];

Isso não funciona. Alguma sugestão sobre um bom método para fazer isso?

questionAnswers(11)

yourAnswerToTheQuestion