ich eine Reihe von positiven/negativen Ints habeam nächsten Wert auf eine Zahl in dem Feld erhält
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;
Nun würde Ich mag eine andere int gegen diese Anordnung zu testen, und gibt die Nummer, die am nächsten an den int .
Zum Beispiel, wenn ich die Nummer 490
verwenden würde, würde ich Artikel # 4 von den Nummern 500
zurückbekommen, was ist der beste Weg, so etwas zu tun?
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];
Das funktioniert nicht. Irgendwelche Vorschläge für eine gute Methode, dies zu tun?
'cdistance = Zahlen [c] - myNumber'. Du nimmst nicht den absoluten Wert. – irrelephant
Sie müssen mit "distance" gleich einer sehr großen Zahl beginnen. Ansonsten wird 'cdistance' nie kleiner sein als es. Außerdem müssen Sie vor dem Vergleich den absoluten Wert von 'cdistance' nehmen. –