简介:我在Android中有一个方法可以进行长距离比较。基本上,我比较日期(时间戳/时期)。其中一个比较检查日期是否相等" if(a2 == a1&& b2 == b1)"。
问题:问题是,即使这些数字相等," if"不起作用。我还在调试屏幕上附上了一个屏幕截图,其中包含了一个示例中要比较的值。
问题:你知道为什么病情不起作用吗?我无法想象,因为只有数学应该有效。也许有一个我没有看到的铸造问题?所有其他情况下"如果"的工作原理。
方式:
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;
}
答案 0 :(得分:5)
Long
是一个对象。如果键入a1 == a2
,则检查a1是否为a2 - 相同的对象,而不是相同的值。如果你想比较它,你必须写a1.equals(a2)
- 如String
。
如果你真的不需要Long
,请使用long
- 它会更容易,也会更有效
答案 1 :(得分:1)
试试这个:
long a1,a2;
long b1,b2;
if (a2.equals(a1) && b2.equals(b1)) {
}