布尔键[]获取NPE(空指针表达式)java不知道如何在游戏开始时分配它?

布尔键[]获取NPE(空指针表达式)java不知道如何在游戏开始时分配它?,java,arrays,Java,Arrays,这是扩展另一个包含gameloop()的类的主类。 keys()在gameloop()中被选中 专用布尔键[]; 按下公共无效键(KeyEvent ke){ keys[ke.getKeyCode()]=true; } 无效键(){ if(keys[KeyEvent.VK_Q]==true){//NPE here(Null指针表达式) 停止(); } if(键[KeyEvent.VK_SPACE]==true&&jump==false){ 跳跃=真; cjump=true; jkptime=Sy

这是扩展另一个包含gameloop()的类的主类。
keys()在gameloop()中被选中

专用布尔键[];
按下公共无效键(KeyEvent ke){
keys[ke.getKeyCode()]=true;
}
无效键(){
if(keys[KeyEvent.VK_Q]==true){//NPE here(Null指针表达式)
停止();
} 
if(键[KeyEvent.VK_SPACE]==true&&jump==false){
跳跃=真;
cjump=true;
jkptime=System.currentTimeMillis();
_7zl2m.setVY(-0.4f);
} 

如果(7zl2m.getX()>=(bg.getWidth(null)-7zl2m.getWidth())和&keys[KeyEvent.VK_RIGHT]==true | | | u7zl2m.getX()您最好在这里使用
HashSet
,因为您不知道所有键都会被按下

像这样初始化它

private Set<Integer> keys = new HashSet<Integer>() ;
检查

keys.contains(someValue);
释放时将其从
集合中移除

keys.remove(someValue);

您最好在这里使用
HashSet
,因为您不知道所有键都会被按下

像这样初始化它

private Set<Integer> keys = new HashSet<Integer>() ;
检查

keys.contains(someValue);
释放时将其从
集合中移除

keys.remove(someValue);


你在任何地方初始化
键[]
吗?你可以像那样使用smth
私有布尔键[]=new boolean[MAX\u keys\u AMOUNT]
你在任何地方初始化
键[]
吗?你可以像那样使用smth
私有布尔键[]=new boolean[MAX\u keys\u AMOUNT]

\u 7zl2m
对我来说并不是一个特别好的变量名……你还没有初始化它。Java会按照你的要求去做。@OliCharlesworth游戏名为7azal2oom,所以我想把主要角色类实例称为7zl2m,但不可能是这样的。我首先想到的是\u 7zl2m:D@SotiriosDelimanolis是和我不想初始化它,它必须在我按下一个键时初始化…所以我无法解决这个问题(如果它必须初始化,我不知道该怎么办)
\u 7zl2m
对我来说并不是一个特别好的变量名……你还没有初始化它。Java会按照你的要求去做。@OliCharlesworth游戏名为7azal2oom,所以我想把主要角色类实例称为7zl2m,但它不可能是这样的。我首先想到的是\u 7zl2m:D@SotiriosDelimanolis是的,我不想要o初始化它,它必须在我按下一个键时初始化…所以我无法解决这个问题(如果它必须初始化,我不知道怎么做)不,我没有,我会尝试…但是最大密钥数量是多少?应该是什么!为什么你会急切地用最大可能性初始化它?如果你跟踪一些少量的密钥,这不应该是一个问题(这是一个布尔值)。我不是说这是最好的做法,但看看他的代码,这是一个快速的方法来确定这是否是实际问题。谢谢,我写了500作为最大数量,但不能得到左边或右边!!如果不是你控制KeyEvent关键点定义,你不知道跟踪关键点的最大值是多少(或者最大值非常大)最好使用Jigar建议的方法。在这种情况下,500不能保证代码正常工作。不,我没有,我会尝试…但是最大密钥数量是多少?应该是什么!为什么要急切地用最大可能性初始化它?如果跟踪少量密钥(这是一个布尔值),这不应该是一个问题.我不是说这是最好的做法,但看看他的代码,这是一个快速的方法来确定这是否是实际问题。谢谢,我写了500作为最大数量,但不能得到左边或右边!!如果不是你控制KeyEvent关键点定义,你不知道跟踪关键点的最大数量是多少(或者最大值非常大)最好使用Jigar建议的方法。在这种情况下,500不能保证代码正常工作。我们将尝试这样做,但如何检查键是否已按下!!
keys.contains(someValue)
如果这个集合中有键code,那么它就被按下了,对吗?这很有效,非常感谢,正在为怪物制作AI…哈哈哈-邪恶的笑声-:D:p我会试试,但是如何检查键是否被按下!!
keys.contains(someValue)
如果这一组中有关键代码,那么它就被按下了,对吗?非常感谢,这起到了作用,正在为怪物制作AI…哈哈哈-邪恶的笑声-:D:P