у меня есть этот кусок кода:Java 7: IF условие срабатывает, когда ложные
void timerCountDown(){
while(RaftNode.getTimeoutVar()){
long x = System.currentTimeMillis();
if(x >= RaftNode.limit){
System.out.println(x);
System.out.println(RaftNode.limit + " THIS SHOULD BE LESS THAN");
System.out.println(System.currentTimeMillis() + " THIS");
System.out.println("TIMED OUT");
raft.RaftNode.setTimeoutVar(false);
nextRandomTimeOut();
raft.RaftNode.onTimeOut();
}
}
}
Так в основном, это тайм-аут функции и тайм-аут обновляется другим условием. Моя проблема заключается в том, что условие x> = RaftNode.limit продолжает срабатывать, даже если оно ложно (через операторы печати).
Мои консольные выходы:
1431532870542
1431532872508 THIS SHOULD BE LESS THAN
1431532870542 THIS
Так х действительно текущее время, но даже несмотря на это меньше предела, условие быть вызвано.
Я понятия не имею, почему!
Предел вар не
public static long limit;
так ничего фантазии здесь
Пытались ли вы присоединить отладчик? – StormeHawke
Что-то, вероятно, изменит предел между сравнением и заявлением печати – Kon
@bluebrain он печатает оба! –