我编写了一个显示填充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
答案 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 == 0
,ones & 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);