2011-11-13 25 views
5

在下面的代码中if语句的求值为true但我可以看到它的false
显然这里有一个逻辑来解释这一点,但我不记得它。
2个多媒体作品展示现象:
http://www.youtube.com/watch?v=DFcRfPErfik
http://www.youtube.com/watch?v=NEC04-kLQBEjava为什么long值在if语句验证错误

线 “holderCompleated.textInfo.setT ......” 将运行,即使做diffHours == 1
看图片,diffHours = 1和表达式橱窗秀false

enter image description here

对于这个问题,一个夏日的可能是:
(Dont是affraid问连最愚蠢的问题:))

这里有一个画面,当我进入if statment

enter image description here

+0

你确定if语句将在本次迭代中被采用*? –

+0

所以你说“holderCompleated ...“是即使调试器显示“diffHours> 1”,如果错误也会执行吗? – foowtf

+0

是的,究竟发生了什么,看看图片,再添加一个。坏的人不能添加短片而不是照片来显示它。是的,我在eclipse中做了一个Clean项目来排除不一致之处 – Erik

回答

3

一些奇怪的事情。即时消息添加Log.d(TAG,...在if语句中,并且调试器正在跨越它,还有一个Log.d(TAG,..就在if语句之前,并且一个就可以了)

也许清理不起作用,你运行的是一些旧代码,你是否尝试重新启动Eclipse?然后删除并重新导入一些项目?

这也解释了为什么你看到调试器输入if语句:不是!正在运行的代码只是与源代码不同步

+1

是的,最有可能的程序确实不重新编译,你正在执行旧代码。 –

+0

刚刚重新启动计算机并关闭打开的项目,并确保干净。同样的事情发生。另外Log.d(TAG ..里面的if语句在执行调试时执行,但在LogCat中没有输入。想想我需要在某处刷新某些缓存,因为调试器的日子很糟糕Eclipse版本:Indigo Service Release 1 Build ID: 20110916-0149 – Erik

+0

您试过清洁您的代码(项目 - >清洁)? – deterb