【问题标题】:This short-circuit (&&) should work but something isn't这种短路(&&)应该可以工作,但有些东西不行
【发布时间】:2011-12-20 06:55:50
【问题描述】:

如果两者都是真的,我想让它干杯……但它认为它们是假的。

if (dateTime > System.currentTimeMillis() && chkBox.isChecked()){
                     Toast.makeText(getBaseContext(), "BEFORE", Toast.LENGTH_SHORT).show();
                     return;
    };

【问题讨论】:

  • 你的问题有点神秘......你能更好地解释一下吗?
  • 你的 dateTime 是什么,如果它是通过编程推导出来的,它永远不会大于 System.currentTimeMillis()
  • @ingsaurabh, long dateTime = System.currentTimeMillis() + 24*60*60*1000L //Tomorrow 这不是真的...
  • OP - 你提出了一个非同寻常的声明(android 的&& 支持被破坏了)......没有任何证据。嗡嗡声。您声称对此有更多可能的解释。
  • @st0le haha​​ha 但是你仍然需要多加一天:P

标签: java android functional-programming logic


【解决方案1】:

我建议打印出以下值:

dateTime
System.currentTimeMillis()
chkBox.isChecked()

if 语句之前,因为我很确定,如果您的工具链(编译器等)没有出现大规模故障,&& 在该语句中工作得很好。并且还在if 语句中的Toast 行之前打印一些内容。

因此我必须假设以下之一。

  1. dateTime not 大于 System.currentTimeMillis() - 例如,如果 dateTime 是从当前时间的某个时间点分配的,那么它将始终小于或等于在那之后的当前时间,尽管存在黑洞,但时钟修改和奇异的宇宙学干扰:-)

  2. chkBox.isChecked() 正在返回 false。

  3. if 工作正常,但 Toast 行没有做任何明显/可见的事情。

使用良好的工具链(如 Java 和/或 Android 的东西)在此类基本操作中存在缺陷的可能性微乎其微。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-29
    • 1970-01-01
    相关资源
    最近更新 更多