编写一个程序,产生一个6 * 6的填满0和1的二维矩阵,显示该矩阵,检测是否每行以及每列中有偶数个1。
package pack2;
import java.security.SecureRandom;
public class EvenOne {
public static void main(String[] args) {
evenOne();
}
public static void evenOne() {
final int ROW_COLUMN = 6;
int[][] matrix = new int[ROW_COLUMN][ROW_COLUMN];
initiateMatrix(matrix);
printMatrix(matrix);
System.out.println(isEvenOne(matrix) ? " Yes" : " Not");
}
/**初始化矩阵*/
public static void initiateMatrix(int[][] matrix) {
for (int i = 0; i < matrix.length; i++)
for (int j = 0; j < matrix.length; j++)
matrix[i][j] = new SecureRandom().nextInt(2);
}
/**矩阵是否有偶数个1*/
public static boolean isEvenOne(int[][] matrix) {
int rowSum, columnSum; //行和、列和
for (int i = 0; i < matrix.length; i++) {
rowSum = columnSum = 0; //每行及每列开始时行和、列和置0
for (int j = 0; j < matrix.length; j++) {
rowSum += matrix[i][j];
columnSum += matrix[j][i];
}
//行、列存在偶数个1时必定为偶数,如果求余2不为0,返回false
if((rowSum % 2 != 0) || (columnSum % 2 != 0)) return false;
}
return true;
}
/**打印矩阵*/
public static void printMatrix(int[][] matrix) {
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix.length; j++)
System.out.print(" " + matrix[i][j]);
System.out.println();
}
}
}