Java 带程序的嵌套循环,布尔数组?
在模型类的构造函数中,我需要分配这个布尔数组的内存(布尔[][]是_hidden;)。我还需要将它们设置为true,但不知道这是如何发生的,为了设置每个元素,必须使用嵌套循环,就像底部的paint方法中的循环一样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_
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雷区所做的那样。现在,您在这两个方面遇到了什么困难?“必须使用嵌套循环”这是正确的。或者你的意思是你不明白“嵌套循环”是什么?听起来你已经知道解决方案(使用循环),那么你在问什么?我似乎在我的构造函数中遇到了一个问题,即隐藏=新布尔[];说数组维数错误,怎么办?