【问题标题】:Java int equality inconsistency? [closed]Java int相等不一致? [关闭]
【发布时间】:2011-11-10 20:42:25
【问题描述】:

这让我发疯了,因为它完全违反了我调试它的尝试:

int k = keyCode; //keyCode being a variable declared by a keyPress
//in the Processing library
//k and keyCode are working properly.
if ((k - UP)*500 == 0); //int UP=38;
{
 println((k-UP)*500 == 0);
 //some other code here
}

结果? “假”(并通过删除 '== 0',一个非 0 的数字)。 据我所知,只有当您使用箭头键时(k==37,38,39,40;38 向上)才能使此条件成立。

是否存在任何此类不一致之处,可能是什么原因造成的? (条件的奇怪格式是因为它修复了一个类似的问题,即仅使用 k==RIGHT 时 RIGHT 键无法正常工作)。

【问题讨论】:

  • 删除 ;在 if 语句的末尾
  • IntelliJ 会警告你 if 的空正文
  • 这就是为什么大括号属于 if 行的末尾!
  • 不会有什么帮助。我在埃及牙套上也看到过同样的错误。
  • 我会结束这个,因为这个问题很简单,而且很不相关。 +1 诚实。顺便说一句,same problem, different language,这发生在我们所有人身上。

标签: java syntax processing conditional-statements


【解决方案1】:

if 后面有一个分号,所以println 总是被执行。

【讨论】:

  • 哇,我现在真的很傻。
  • @BlueShamen 别担心,我们有时都会这样做。诚实 +1。
【解决方案2】:

在你的 if 之后你有一个 ;。这使它成为一个带有空语句的 if,后跟一个 unconditiend 块。只需删除 if 行中的分号即可。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-06
    • 2012-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-16
    相关资源
    最近更新 更多