Привета Я нашел следующий код для сравнения набора отпечатков пальцев:Как следующий метод работает
public float compare(Fingerprint fingerprint) {
float result = 0f;
HashMap<String, Integer> fingerprintMeasurements = fingerprint.getMeasurements();
TreeSet<String> keys = new TreeSet<String>();
keys.addAll(mMeasurements.keySet());
keys.addAll(fingerprintMeasurements.keySet());
for (String key : keys) {
int value = 0;
Integer fValue = fingerprintMeasurements.get(key);
Integer mValue = mMeasurements.get(key);
value = (fValue == null) ? -119 : (int) fValue;
value -= (mValue == null) ? -119 : (int) mValue;
result += value * value;
}
//result = FloatMath.sqrt(result); // squared euclidean distance is enough, this is not needed
return result;
}
/** compares the fingerprint to a set of fingerprints and returns the fingerprint with the smallest euclidean distance to it */
public Fingerprint getClosestMatch(ArrayList<Fingerprint> fingerprints) {
//long time = System.currentTimeMillis();
Fingerprint closest = null;
float bestScore = -1;
if(fingerprints != null) {
for(Fingerprint fingerprint : fingerprints) {
float score = compare(fingerprint);
if(bestScore == -1 || bestScore > score) {
bestScore = score;
closest = fingerprint;
}
}
}
//time = System.currentTimeMillis() - time;
//Log.d("time", "\n\n\n\n\n\ncalculation location took " + time + " milliseconds.");
return closest;
}
1) , как делает работу цикла. Это мое понимание того, что мы просматриваем все значения, хранящиеся в ключах ведения TreeSet
в qestion в основном на линиях
value = (fValue == null) ? -119 : (int) fValue;
value -= (mValue == null) ? -119 : (int) mValue;
что знак вопроса делают на этих строк кода?
2) зачем нужно минус один в follwing строки коды ется абстрактными лучшим показателем отпечатков пальцев
if(bestScore == -1 || bestScore > score) {
3) есть способ увидеть назначение значений в затмении (для целей отладки)?
Сделайте поиск google-оператора троичного оператора. Если уж на то пошло, поиск google «вопросительный знак java» дал бы вам результаты. Вы не должны просто копировать-вставлять код, который вы найдете в Интернете, и надеяться на лучшее. Вы должны понять, что он делает в первую очередь. И вы спрашиваете об отладке в eclipse? Если это так, для вас есть другое ключевое слово google. –
1) Тернарный оператор. 2) Не знаю, это выбор реализации, на который мы не были включены. 3) Да, вы можете выполнить свою программу в режиме отладки и использовать контрольные точки (и Watch) для просмотра переменных их значений в промежуточных точках во время выполнения. –