【问题标题】:Am I correct regarding this boolean method? [closed]我对这种布尔方法是否正确? [关闭]
【发布时间】:2020-07-05 06:02:42
【问题描述】:

我正在寻找如何完善 Java 中的运动。我找到的代码如下:

public void update() {
        
    for (int i = 0; i < AMOUNT_KEYS; i++) {
        keysLast[i] = keys[i];  ////Sets buttons pressed this frame equal to the lastKey array
    }

    for (int i = 0; i < AMOUNT_BUTTONS; i++) {
        buttonsLast[i] = buttons[i];    //Sets buttons pressed this frame equal to the lastKey array
    }
}
    
//keys Methods
public boolean isKeyPressed(int keycode) {
    return keys[keycode];
}
    
public boolean isKeyUp(int keycode) {
    return !keys[keycode] && keysLast[keycode]; //Does not return 2 values, it returns true if these conditions are met?
}

public boolean isKeyDown(int keycode) {
    return keys[keycode] && !keysLast[keycode];
}

我想知道我对这个 sn-p 的想法是否正确,我的猜测在旁边注释:

public boolean isKeyUp(int keycode) {
    return !keys[keycode] && keysLast[keycode];  //Does not return 2 values, it returns true if these conditions are met?
}

public boolean isKeyDown(int keycode) {
    return keys[keycode] && !keysLast[keycode];
}

在我看来,isKeyDownisKeyUp 方法返回 2 个布尔值。我认为那是不可能的。但我对其进行了测试,它似乎就像一个 if 语句?。那么如果return命令后面的语句为true,它会返回true吗?

*我说的对吗?如果是这样,为什么它会那样做? *

【问题讨论】:

  • 查找布尔逻辑和逻辑与运算符
  • 不知道你可以那样做,因为我没有知识,所以投票似乎有点苛刻。我查一下
  • 我不是投反对票的,你要求一个文档来阅读它,所以我有义务
  • 是的,我不是故意指向你的,泰勒,对不起!我只是不喜欢投票,很难获得代表,所以我将它混入了评论中。我查了一下,现在明白了。这实际上是一个简洁的功能!谢谢

标签: java return


【解决方案1】:

首先,您的代码可以编译吗?仅当您的数组返回 boolean 值时,以下内容才有效。

return !keys[keycode] && keysLast[keycode];

如果 keys[keyCode] 为 true,则 !keys[KeyCode] 将为 false,并且语句将返回 false,因为不需要计算表达式的其余部分。

【讨论】:

  • 它编译。因此,在 isKeyUp 方法中,它返回“!keys[keycode] && keysLast[keycode]”,如您所说。因此,如果键在这一帧向上并且在最后一帧向下,它将在两者上都返回 true。由于“!”,如果“!”不存在它会返回 false && true。我知道它是如何工作的,我只是不知道你可以这样写
  • 所以当你返回一个布尔值时你可以做语句?
  • 是的。 If(a &amp;&amp; b)boolean result = a &amp;&amp; b; if(result) 相同
  • 嗯,它不一定那么直观。还要记住&amp;&amp; 是短路的,&amp; 不是。对于a &amp;&amp; b,如果afalse,则不会计算b。但是对于 a &amp; bb 进行评估,而不管 a
  • 也不知道它的存在!我会接受您的回答,因为问题已在 cmets 中得到解答!谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-01
  • 2016-08-20
  • 1970-01-01
  • 1970-01-01
  • 2016-05-23
  • 2014-01-10
  • 1970-01-01
相关资源
最近更新 更多