2011-12-12 90 views
2

这一个已经给我适合一个多小时...我可以发誓代码是正确的。我错过了什么吗?Android逻辑操作&&?

if((fType != "EXACT") && (dateTime > System.currentTimeMillis())){ 
    myIntent = new Intent(getBaseContext(), MyScheduledReceiver1.class);       
} else { 
    myIntent = new Intent(getBaseContext(),MyScheduledReceiver2.class); 
} 

即使StringfType是“精确” & longdateTime是在未来......它仍然呼吁MyScheduledReceiver1.class ...自从1时是假的,应该叫MyScheduledReceiver2.class。

+0

你一定要使用运营商>是在Java中可用? – tstenner

+0

东西告诉我你通常用C#编写。 ;) –

+1

@tstenner我很确定“大于”在Java中可用。用于Java的 –

回答

11

的问题可能是,你比较字符串引用而不是在比较值字符串:

if (!fType.equals("EXACT") && dateTime > System.currentTimeMillis()) { 
    ... 
} 

那现在请的字符串equals方法,它会比较是否两个字符序列是相同的,而不仅仅是fType"EXACT"是否指的是完全相同的String对象。

(这将抛出一个异常,如果fType为null;如果你希望它只是不匹配,你可以使用if (!"EXACT".equals(fType) && ...) - 这取决于情况)

+0

yay。/s –

+0

Thx ...做同样的PHP和JAVA有时并不明智;) – user961389

+0

这当然是它。这是我跳出来的第一件事。 – Sheriff