对于参数类型boolean,int,运算符!=和==未定义

时间:2014-03-03 20:08:54

标签: java boolean key operator-keyword

我一直收到这个错误:

  

对于参数类型boolean,int

,运算符!=和==未定义

我的代码,我不知道如何解决它。非常感谢帮助:)谢谢!

public static boolean isPressed(int i)
{
  return (keyState[i] != 0) && (prevKeyState[i] == 0);
}

6 个答案:

答案 0 :(得分:2)

看起来keyState[i]prevKeyState[i]是布尔值(true / false值),因此将它们与零进行比较是没有意义的。也许你想要的是

return (keyState[i] == true) && (prevKeyState[i] == false);

或甚至以更易读的形式

return keyState[i]  &&  ! prevKeyState[i];

答案 1 :(得分:1)

你应该这样做:

return (keyState[i] == true) && (prevKeyState[i] == false);

因为keystate [i]和prevkeystate [i]属于bool类型,所以你还必须将它们与bool进行比较。 或者你可以写:

return keyState[i] && !prevKeyState[i];

答案 2 :(得分:0)

您正在将booleanint进行比较。 keyStateprevKeyState类型都是boolean[]return (keyState[i] && !prevKeyState[i]); 吗?如果是这样,这可以解释为什么你会看到这个错误。

只需将您的陈述更改为:

{{1}}

它应该解决问题。

答案 3 :(得分:0)

正如错误消息所示,您无法使用!=将左侧的布尔值与右侧的整数(0)进行比较。从错误消息判断,听起来keyStateprevKeyState都是boolean[]

要解决此问题,请将数组更改为int[]或测试keyState[i] != false而不是keyState[i] != 0

与C不同,Java具有boolean类型,您不应该使用像1和0这样的整数代表真/假。

答案 4 :(得分:0)

只需从编译器中读取错误消息:

keyState和prevKeyState肯定是类型:boolean []

您的代码必须如下所示:

public static boolean isPressed(int i)
{
  return (keyState[i]) && (! prevKeyState[i]);
}

答案 5 :(得分:0)

我认为你已经声明了布尔数组boolean [] keyState和boolean [] prevKeyState,但是你没有在这里说清楚。

如果这是真的,那么你将布尔值keyState [i]和prevKeyState [i]与int值0和1进行比较。

试试这个:

return (keyState[i] && !prevKeyState[i]);