以下是我的代码。我想让数组中的每个第二个值为false,左边的值为true。然后我想反转数组(true = false,false = true)。我将反转部分向下,但不是每隔一个值使得假开始。
public class Stack {
public static void main(String[] args) {
int ROW = 10, COL = 10;
boolean[][] ATwoDBoolArray = new boolean[ROW][COL];
PutValuesInArray(ATwoDBoolArray);
printArray(ATwoDBoolArray);
invertArray(ATwoDBoolArray);
printArray(ATwoDBoolArray);
}
private static boolean[][] PutValuesInArray(boolean array[][]) {
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
array[i][j] = false;
}
}
return array;
}
private static void printArray(boolean[][] array){
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
System.out.println(array[i][j]);
}
}
}
private static boolean[][] invertArray(boolean array[][]){
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
if(array[i][j]){
array[i][j] = false;
}else{
array[i][j] = true;
}
}
}
return array;
}
}
答案 0 :(得分:1)
执行此操作的方法是将PutValuesInArray(boolean array[][])
更改为以下代码:
private static boolean[][] PutValuesInArray(boolean array[][]) {
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j+=2) {
array[i][j] = true;
}
}
for (int i = 0; i < array.length; i++) {
for (int j = 1; j < array[i].length; j+=2) {
array[i][j] = false;
}
}
return array;
}
答案 1 :(得分:1)
你的意思是这样吗?
for (int i = 0; i < array.length; i+=2)
array[i] = false;
按2
代替1
增加。
在int i = 1
开始循环,将所有奇数元素设为false。
如果您的数组长度少于32个元素,则可以使用单个int
在其位中存储32个布尔值。而然后你可以使每个添加元素都像这样:
int array;
array &= 0x55555555; // set odd bits false
array &= 0xAAAAAAAA; // set even bits false
答案 2 :(得分:0)
如果它是棋盘状图案,那么我建议如下:
boolean[][] array = new boolean[5][5];
for(int x = 0; x < array.length; x ++)
for(int y = 0; y < array[x].length; y ++)
if((x + y) % 2 == 0)
array[x][y] = true;
这将创建一个数组,其元素设置为棋盘格式的true
和false
。
生成后的5 x 5
数组将如下所示:
boolean[][] array = {
{true, false, true, false, true},
{false, true, false, true, false},
{true, false, true, false, true},
{false, true, false, true, false},
{true, false, true, false, true}
}