Introduction: J'ai une méthode dans Android pour faire de longues comparaisons. Fondamentalement, je compare les dates (timestamps/epochs). L'une de ces comparaisons vérifie si les dates sont égales "if (a2 == a1 & & b2 == b1)".Java Long Comparaison
Problème: Le problème est que même si ces nombres sont égaux, le "si" ne fonctionne pas. J'attache également une capture d'écran de l'écran de débogage avec les valeurs qui sont comparées dans un exemple.
Question: Savez-vous pourquoi la condition ne fonctionne pas? Je ne peux pas comprendre puisque c'est juste mathématique qui devrait fonctionner. Peut-être qu'il y a un problème de casting que je ne vois pas? Tous les autres cas, le "si" fonctionne.
Méthode:
public ArrayList<Integer> getConflicts(ArrayList<AssetBooking> assetBookings) {
Epoch epoch = new Epoch();
ArrayList<Integer> conflicts = new ArrayList<>();
for (AssetBooking aB : assetBookings) {
Long a1 = aB.getFromDatetime()/1000;
Long b1 = aB.getToDatetime()/1000;
Long a2 = epoch.getEpochNoSeconds(fromDatetime);
Long b2 = epoch.getEpochNoSeconds(toDatetime);
if (a2 == a1 && b2 == b1) {
System.out.println("equals");
}
if ((a2 < a1 && b2 >= a1) || (a2 == a1) || (a2 > a1 && b2 < b1) || (a2 > a1 && a2 < b1) || (a2 == a1 && b2 == b1)) {
conflicts.add(assetBookings.indexOf(aB));
}
}
return conflicts;
}
essayer type primitif « long » au lieu de « Long » qui est une classe wrapper. –