Java 带程序的嵌套循环,布尔数组?

Java 带程序的嵌套循环,布尔数组?,java,loops,Java,Loops,在模型类的构造函数中,我需要分配这个布尔数组的内存(布尔[][]是_hidden;)。我还需要将它们设置为true,但不知道这是如何发生的,为了设置每个元素,必须使用嵌套循环,就像底部的paint方法中的循环一样 class MineFinderModel { public static int MINE_SQUARE = 10; public static int EMPTY_SQUARE = 0; int num_of_cols; int num_of_rows; int[][] the_

在模型类的构造函数中,我需要分配这个布尔数组的内存(布尔[][]是_hidden;)。我还需要将它们设置为true,但不知道这是如何发生的,为了设置每个元素,必须使用嵌套循环,就像底部的paint方法中的循环一样

class MineFinderModel {
public static int MINE_SQUARE = 10;
public static int EMPTY_SQUARE = 0;

int num_of_cols;
int num_of_rows;
int[][] the_minefield;
boolean[][] is_hidden;

public MineFinderModel(int n_cols, int n_rows) {
    num_of_rows = n_rows;
    num_of_cols = n_cols;
    the_minefield = new int[num_of_cols][num_of_rows];
    is_hidden = new boolean[][];
}
绘制方法示例:

                   for (int i = 0;i<numCols;i++)
         {
        for(int j = 0;j<numRows;j++)
        {
            Rectangle r = getRect(i,j);
            g.setColor(Color.black);
            g2.draw(r);

            if(i==0&&j==0)                                  {
                g2.drawOval(x,y,w,h);
            g2.fillOval(x,y,w,h);
            }
            if(i==0&&j==(numRows-1))
            g2.fillOval(x,y,w,h);

            if(i==(numCols-1)&&j==0)
            g2.fillOval(x,y,w,h);

            if(i==(numCols-1)&&j==(numRows-1))
            g2.fillOval(x,y,w,h);

for(inti=0;i只需编写一个嵌套循环

for (int i = 0;i<n_rows;i++){
    for(int j = 0;j<n_cols;j++){
        is_hidden[n_rows][n_cols] = true;
    }
}

for(inti=0;i只需编写一个嵌套循环

for (int i = 0;i<n_rows;i++){
    for(int j = 0;j<n_cols;j++){
        is_hidden[n_rows][n_cols] = true;
    }
}

for(int i=0;i您需要使用以下大小定义数组:

is_hidden = new boolean[cols][rows]();
并遍历,将每个单元格设置为
true
(布尔和布尔数组默认为
false


请注意,它是存在的,但只会让您半途而废,因为它不会填充多维数组。您可以使用它,但必须遍历行并使用
数组。在每行上填充
。在本例中可能不值得,但无论如何都值得注意。

您需要使用大小定义数组,例如

is_hidden = new boolean[cols][rows]();
并遍历,将每个单元格设置为
true
(布尔和布尔数组默认为
false

请注意,它是存在的,但只会让您半途而废,因为它不会填充多维数组。您可以使用它,但必须遍历行,并使用
数组。在每行上填充
。在本例中可能不值得,但无论如何都值得注意。

尝试以下方法:

    int num_of_cols = 2;
    int num_of_rows = 3;
    boolean[][] is_hidden;
    is_hidden = new boolean [num_of_cols][num_of_rows];

    for (int i = 0; i < num_of_cols; i++) {
        for (int j = 0; j < num_of_rows; j++) {
            is_hidden[i][j] = true;
        }
    }
试试这个:

    int num_of_cols = 2;
    int num_of_rows = 3;
    boolean[][] is_hidden;
    is_hidden = new boolean [num_of_cols][num_of_rows];

    for (int i = 0; i < num_of_cols; i++) {
        for (int j = 0; j < num_of_rows; j++) {
            is_hidden[i][j] = true;
        }
    }

我有一个简单的解决方案:不要使用数组is_hidden并用true填充它的每个元素,而是使用名称isVisible,不要填充它,因为它的每个元素都已初始化为false;)

我有一个简单的解决方案:不要使用隐藏的数组并用true填充数组中的每个元素,而是使用名称isVisible,不要填充它,因为它的每个元素都已初始化为false;)

定义布尔数组时,默认情况下所有元素的值都为false。 我建议不要遍历所有元素,而是以可以使用默认false值的方式实现您的条件

例如

这可以很容易地用

boolean[][] isDisabled =  new boolean[10][10];
if(! isDisabled[i][j]){
    //some code
}

这样可以节省处理时间,代码看起来很整洁:)。

定义布尔数组时,默认情况下所有元素的值都为false。 我建议不要遍历所有元素,而是以可以使用默认false值的方式实现您的条件

例如

这可以很容易地用

boolean[][] isDisabled =  new boolean[10][10];
if(! isDisabled[i][j]){
    //some code
}

这样可以节省处理时间,代码看起来很整洁:)。

是的,您需要一个嵌套循环-并且您需要将数组初始化为正确的大小,就像您对\u雷区所做的那样。现在,您在这两个方面遇到了什么困难?“必须使用嵌套循环”这是正确的。或者你的意思是你不明白“嵌套循环”是什么?听起来你已经知道解决方案(使用循环),那么你在问什么?我似乎在我的构造函数中遇到了一个问题,即隐藏=新布尔[];表示数组维度错误,如何执行?是的,您需要一个嵌套循环-并且您需要将数组初始化为正确的大小,就像您对\u雷区所做的那样。现在,您在这两个方面遇到了什么困难?“必须使用嵌套循环”这是正确的。或者你的意思是你不明白“嵌套循环”是什么?听起来你已经知道解决方案(使用循环),那么你在问什么?我似乎在我的构造函数中遇到了一个问题,即隐藏=新布尔[];说数组维数错误,怎么办?