我基本上写了一个布尔数组[x] [y],x,y是坐标,如果真的有炸弹的话。
我遇到了吸气器问题,
我到目前为止
boolean[][] bombArray = new boolean[Total_Columns][10];
for(x=0,x<Total_Colmns,x++){
bombArray[x][0] = true;
}
public boolean getBombArray(int x,int y){
if(bombArray[x][y] .equals(true){
return true;
}
else{
return false;
}
}
我的主要看起来像这样
main()
boolean isBomb = myPanel.getBombArray(x,y) //x and y being the cursor coordinates
if(isBomb){
....
....
....
....
{
else{
....
....
....
}
基本上网格将是这样的
********* ......... ......... ......... ......... ......... ......... ......... .........
但我得到的不起作用,它不断抛出异常
答案 0 :(得分:3)
这一行:
if(bombArray[x][y] .equals(true){
缺少括号前的右括号。
您的函数的正确版本将是:
public boolean getBombArray(int x,int y){
// bombArray[x][y] has type 'boolean', which isn't an object, it's a primitive
// (don't use .equals() on primitives)
if(bombArray[x][y] == true){
return true;
} else{
return false;
}
}
但是你可以将这个显着简化为我认为更清晰的东西:
public boolean getBombArray(int x,int y){
// bombArray[x][y] is true if there's a bomb, false otherwise
return bombArray[x][y];
}
答案 1 :(得分:3)
由于此处缺少括号,您应该收到编译时错误:
if(bombArray[x][y] .equals(true)
...
整个功能体应该是:
return bombArray[x][y];
答案 2 :(得分:1)
运行时发生异常。我怀疑这段代码能够抛出异常,因为它不能编译。让我们来看看:
for(x=0,x<Total_Colmns,x++){
bombArray[x][0] = true;
}
要匹配您想要的Total_Columns
数组声明,而不是Total_Colmns
。逗号应该是分号,x变量可能是未声明的。你的循环应如下所示:
for (int x = 0; x < Total_Columns; x++) {
bombArray[x][0] = true;
}
此外,如果您没有将单独的代码片段复制并粘贴到您的问题中,那么您的循环似乎不在任何方法之内。它不会在那里工作。它可能属于你的类的构造函数。
在吸气剂中你有:
if(bombArray[x][y] .equals(true){
return true;
} else {
return false;
}
boolean
是基本类型,而不是Object
,因此它没有equals
方法。您可以使用bombArray[x][y] == true
。您还错过了)
声明中的结束if
。实际上,由于你的数组元素已经是一个布尔值,你可以直接返回它:
public boolean getBombArray(int x, int y) {
return bombArray[x][y];
}
如果你从光标位置传入ArrayIndexOutOfBoundsException
,你可能想要限制x&amp;你的getter中的y坐标。类似的东西:
if (x < 0 || x >= bombArray.length || y < 0 || y >= bombArray[x].length) return false;
如果您仍然收到错误和异常,请显示真实的错误消息。它们包含帮助您修复它们的信息。 “不工作”是不够的信息。