У меня есть этот Java-код в Eclipse, который я бы хотел отлаживать.Eclipse Debugger не останавливается при условной точке останова
Это код:
public Double repulsion(Node n1, Node n2) {
Double rep = 0.0;
rep = Math.pow(K, 2)/distEuc(n1, n2);
System.out.println("Répulsion : " + rep);
listForcesRep.add(rep);
return rep;
}
private Double distEuc(Node n1, Node n2) {
Double d = 0.0;
Object[] n1Attributes = n1.getAttribute("xy");
Double x1 = (Double) n1Attributes[0];
Double y1 = (Double) n1Attributes[1];
Object[] n2Attributes = n2.getAttribute("xy");
Double x2 = (Double) n2Attributes[0];
Double y2 = (Double) n2Attributes[1];
d = Math.sqrt((Math.pow(x1 - x2, 2) + Math.pow(y1 - y2, 2)));
return d;
}
Я переключен контрольная точка в строке: rep = Math.pow(K, 2)/distEuc(n1, n2);
, и я побежал отладчик в значениях по умолчанию, и она отлично работает.
Дело в том, что в какой-то момент переменная rep
принимает значение NaN
, и мне нужна условная точка останова, чтобы понять почему.
Я установил условную точку останова, как это:
Но когда я бегу отладки, он пропускает точки останова и цикл продолжает идти.
Что я сделал не так? И как я могу это исправить?
Спасибо!
Я ничего не знаю о Java, так что это просто предположение: на некоторых языках (например, Python) 'NaN == NaN' всегда' False'. Вам нужно проверить, является ли rep числом или использовать какой-либо метод, чтобы проверить, является ли это NaN. – iled
@iled yes есть функция 'isNan()', которая выполняет задание, как @andrucz упоминает в своем правильном ответе. Теперь это работает! – user1885868