以下是我到目前为止的代码。我想使数组中的每一秒值都为假,而剩余的值为真。然后我想反转数组(真 = 假,假 = 真)。我有反转部分,但没有让每秒值为假开始。
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;
}
}
一种方法
是将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;
}
你的意思是这样?
for (int i = 0; i < array.length; i+=2)
array[i] = false;
按 2
递增,而不是1
递增。
从 int i = 1
处启动循环以将所有奇数元素设置为 false。
如果数组的长度少于 32 个元素,则可以使用单个int
在其位中存储 32 个布尔值。然后你可以像这样让每个添加元素都为 false:
int array;
array &= 0x55555555; // set odd bits false
array &= 0xAAAAAAAA; // set even bits false
如果你追求的是棋盘格模式——我建议如下:
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}
}