0

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

基本上网格是这样的

*********
…………
…………
…………
…………
…………
…………
…………
…………

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

4

3 回答 3

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];
}
于 2013-10-19T01:38:22.090 回答
3

由于此处缺少括号,您应该会收到编译时错误:

if(bombArray[x][y] .equals(true)
    ...

整个函数体应该是:

 return bombArray[x][y];
于 2013-10-19T01:39:22.707 回答
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;
}

Aboolean是原始类型,而不是 a Object,因此它没有equals方法。你可以只使用bombArray[x][y] == true. 您还缺少声明的结束语)if实际上,由于您的数组元素已经是布尔值,您可以直接返回它:

public boolean getBombArray(int x, int y) {
    return bombArray[x][y];
}

如果您ArrayIndexOutOfBoundsException通过传入光标位置获得 s,您可能希望限制 getter 中的 x 和 y 坐标。就像是:

if (x < 0 || x >= bombArray.length || y < 0 || y >= bombArray[x].length) return false;

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

于 2013-10-19T01:42:08.963 回答