编写一个程序,将0和1随机填充到8 * 8的棋盘中,打印该板,
并找到全为0或1的行,列或对角线。使用二维数组表示棋盘。
代码
package cn.icene.javaWork.Board;
import java.util.Random;
public class Board {
public static void main(String[] args) {
int[][] board = {{0,0,0,0,0,0,0,1},
{1,0,1,1,1,1,1,1},
{1,1,0,1,1,1,1,1},
{1,1,1,0,1,1,1,1},
{1,1,1,1,0,1,1,1},
{1,1,1,1,1,0,1,1},
{1,1,1,1,1,1,0,1},
{1,1,1,1,1,1,1,0}};
// Random random = new Random(); // 创建Random类来获得随机数
// int[][] board = new int[8][8];
// for (int j = 0 ; j < 8; j++)
// for (int k = 0 ; k <8 ; k++)
// board[j][k] = random.nextInt(2); // 为矩阵赋值
for (int[] arr : board) {
for (int c : arr)
System.out.print(c+" ");
System.out.println();
}
findRom(board);
findColumn(board);
findMainDiagonal(board);
findSubDiagonal(board);
}
public static void findRom(int[][] board) {
int[] flag = new int[8]; // 定义一个数组用来记录board数组中每一行数据相加的值,共8个
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++)
flag[i] += board[i][j]; // 将board数组第i+1行的数据加起来给flag数组中的第i+1个元素
// 判断值
if (flag[i] == 0)
System.out.println("第"+(i+1)+"行全为0");
if (flag[i] == 8)
System.out.println("第"+(i+1)+"行全为1");
}
}
public static void findColumn(int[][] board) {
int[] flag = new int[8];
for (int i = 0; i < 8; i++){
for (int j = 0; j < 8; j++)
flag[i] += board[j][i];
if (flag[i] == 0)
System.out.println("第"+(i+1)+"列全为0");
if (flag[i] == 8)
System.out.println("第"+(i+1)+"列全为1");
}
}
public static void findMainDiagonal(int[][] board) {
int[] flag = new int[1];
for (int i = 0; i < 8; i++)
flag[0] += board[i][i];
if (flag[0] == 0)
System.out.println("主对角线全为0");
if (flag[0] == 8)
System.out.println("主对角线全为1");
}
public static void findSubDiagonal(int[][] board) {
int[] flag = new int[1];
for (int i = 0; i < 8; i++)
flag[0] += board[i][7-i];
if (flag[0] == 0)
System.out.println("次对角线全为0");
if (flag[0] == 8)
System.out.println("次对角线全为1");
}
}