如何在偶数个1的矩阵中显示行数和列数?

时间:2015-11-12 18:18:43

标签: java matrix

我编写了一个显示填充0和1的矩阵的代码。我的问题是我不知道如何计算和显示偶数为1的行数和列数。例如,一个六乘六的矩阵,其中3行为2 1,1行为2 1。

显示:偶数为1的行数:3           偶数为1的列数:1

我知道必须有一个使用mod来确定它是否均匀的代码,但我不知道将它放在代码中的哪个位置。这就是我所拥有的。

public class Matrix {

    public static void main(String[] args) {

        int[][]matrix = new int [6][6];

        for (int row = 0; row < matrix.length; row++) {
            for (int col = 0; col < matrix[row].length; col++){
                matrix[row][col] = (int)(Math.random()*2);
            }

        }           

        System.out.println(" ");
        for (int row = 0; row < matrix.length; row++) {
            for (int col = 0; col < matrix[row].length; col++){
                System.out.print(matrix[row][col] + " "); 
            }
            System.out.print("\n");
        }
    }
}


1 0 0 0 0 1
0 0 0 0 1 1
0 0 1 0 0 0
0 1 1 1 0 0
1 1 1 1 0 1
0 1 1 0 1 1

偶数为1的行数:3 偶数为1的列数:5

3 个答案:

答案 0 :(得分:0)

您需要计算给定列中的1的数量。你的循环看起来很不错,但是包含另一个遍历行中每个单元格的循环并将这些值相加(不需要检查它是否为1,因为0不会添加到计数中)。

要确定该值是否为偶数,请使用模数(余数运算符),即%。基本上,此运算符通过将数字除以另一个数字来工作,但不是给出商,而是给出余数,作为n整数。所以5 % 2 == 1是Java中的真实陈述。您可以在代码中使用count % 2 == 0来确定计数是否均匀。

然后使用当前循环打印出偶数行。

答案 1 :(得分:0)

一个很好的简单方法是循环遍历行/列,并为每个遇到的事件设置一个布尔值1.开始布尔值为true,因为没有什么是偶数,你遇到的第一个将把它翻转为假,第二个为真等等...

public static int evenColumns(int[][] matrix)
{
    int columns = 0;
    for(int[] ints : matrix)
    {
        boolean even = true;
        for(int i : ints)
            if(i == 1)
                even = !even;
        if(even)
            columns++;
    }
    return columns;
}

public static int evenRows(int[][] matrix)
{
    int rows = 0;
    for(int row = 0; row < matrix[0].length; row++)
    {
        boolean even = true;
        for(int[] ints : matrix)
            if(ints[row] == 1)
                even = !even;
        if(even)
            rows++;
    }
    return rows;
}

另一种更常见的方法是在行/列中查找1的数量,然后通过ones % 2 == 0ones & 1 == 0和其他类似检查检查它是否为偶数/奇数

答案 2 :(得分:0)

尝试以下代码,

int evenRowCount = 0;
for (int row = 0; row < matrix.length; row++) {
    int rowCount = 0;
    for (int col = 0; col < matrix[row].length; col++){
        rowCount += matrix[row][col];
    }
    if (rowCount % 2 == 0) {
       evenRowCount++;
    }
}
System.out.println("Number of rows with an even number of 1s:" + evenRowCount);

int evenColCount = 0;
for (int col = 0; col < matrix[0].length; col++) {
    int colCount = 0;
    for (int row = 0; row < matrix.length; row++){
        colCount += matrix[row][col];
    }
    if (colCount % 2 == 0) {
       evenColCount++;
    }
}
System.out.println("Number of cols with an even number of 1s:" + evenColCount);