getter for boolean array [] []

时间:2013-10-19 01:22:00

标签: java project

我基本上写了一个布尔数组[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{
....
.... 
....
}

基本上网格将是这样的

*********
.........
.........
.........
.........
.........
.........
.........
.........

但我得到的不起作用,它不断抛出异常

3 个答案:

答案 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;

如果您仍然收到错误和异常,请显示真实的错误消息。它们包含帮助您修复它们的信息。 “不工作”是不够的信息。