Java 关于这个布尔方法,我说的对吗?
我正在研究如何用Java来完善这个动作。我找到的代码如下所示:Java 关于这个布尔方法,我说的对吗?,java,return,Java,Return,我正在研究如何用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+
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];
}
在我看来,方法isKeyDown
和iskeydup
返回两个布尔值。我认为那是不可能的。但是我测试了它,它看起来像一个if语句?。那么,如果return命令后面的语句为true,它将返回true
我说得对吗?如果是的话,为什么会这样?有没有我能读到的文档?首先,你的代码编译了吗?以下内容仅在数组返回
布尔值时有效
return !keys[keycode] && keysLast[keycode];
如果keys[keyCode]为真,那么!keys[KeyCode]将为false,语句将返回false,因为表达式的其余部分不需要求值。查找布尔逻辑和逻辑and运算符。我不知道你可以这样做,因为我不知道,向下投票似乎有点苛刻。我会查一查的我不是反对票,你让医生看了,所以我不是故意指你的泰勒,对不起!我只是不喜欢被否决的票,很难得到代表,所以我把它加入了评论中。我查了一下,现在明白了。事实上,这是一个整洁的功能!ThanksIt编译。因此,在isKeyUp方法中,它返回“!keys[keycode]&&keysLast[keycode]”。因此,如果关键点在这一帧上,而在上一帧下,则在这两个帧上都将返回true。由于“!”的原因,如果“!”不存在,它将返回false&&true。我知道它是如何工作的,我只是不知道你可以这样写,所以当你返回一个布尔值时,你可以做语句?是的<代码>如果(a&&b)
与布尔结果=a&&b;如果(结果)
很好,就不一定那么直观了。还要记住,&
是短路,&
不是短路。对于a和b,如果a
为false
,则不会计算b。但是对于a&b
,无论a
如何,都将对b
进行评估。我也不知道存在这种情况!我会接受你的回答,因为问题已经在评论中得到了回答!谢谢
return !keys[keycode] && keysLast[keycode];