编写java一个程序,在一个 4*$的矩阵中数据填入 0 和 1,打印该矩阵,找 到第一个具有最多 1 的行和列。
时间: 2023-05-27 16:04:51 浏览: 119
两个5*5矩阵的数据由数据文件
以下是Java程序:
```java
import java.util.Random;
public class MaxOnesMatrix {
public static void main(String[] args) {
int[][] matrix = generateMatrix(4, 4);
printMatrix(matrix);
int row = findMaxRow(matrix);
int col = findMaxColumn(matrix);
System.out.printf("Row %d has the most ones with %d ones.\n", row + 1, countOnes(matrix[row]));
System.out.printf("Column %d has the most ones with %d ones.\n", col + 1, countOnes(getColumn(matrix, col)));
}
private static int[][] generateMatrix(int rows, int cols) {
int[][] matrix = new int[rows][cols];
Random rand = new Random();
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
matrix[i][j] = rand.nextInt(2); // generates either 0 or 1
}
}
return matrix;
}
private static void printMatrix(int[][] matrix) {
System.out.println("Matrix:");
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[0].length; j++) {
System.out.print(matrix[i][j] + " ");
}
System.out.println();
}
}
private static int countOnes(int[] arr) {
int count = 0;
for (int num : arr) {
if (num == 1) {
count++;
}
}
return count;
}
private static int[] getColumn(int[][] matrix, int col) {
int[] column = new int[matrix.length];
for (int i = 0; i < matrix.length; i++) {
column[i] = matrix[i][col];
}
return column;
}
private static int findMaxRow(int[][] matrix) {
int maxOnes = -1;
int maxRow = -1;
for (int i = 0; i < matrix.length; i++) {
int ones = countOnes(matrix[i]);
if (ones > maxOnes) {
maxOnes = ones;
maxRow = i;
}
}
return maxRow;
}
private static int findMaxColumn(int[][] matrix) {
int maxOnes = -1;
int maxCol = -1;
for (int j = 0; j < matrix[0].length; j++) {
int ones = countOnes(getColumn(matrix, j));
if (ones > maxOnes) {
maxOnes = ones;
maxCol = j;
}
}
return maxCol;
}
}
```
这个程序使用了以下几个方法:
- `generateMatrix` 用于生成一个给定大小的矩阵,其中填充了随机生成的 0 和 1。
- `printMatrix` 用于打印矩阵。
- `countOnes` 用于计算一个数组中有多少个 1。
- `getColumn` 用于获取矩阵中的一个列。
- `findMaxRow` 用于找到具有最多 1 的行。
- `findMaxColumn` 用于找到具有最多 1 的列。
在 `main` 方法中,我们首先生成矩阵,然后打印它。接着,我们使用 `findMaxRow` 和 `findMaxColumn` 方法找到具有最多 1 的行和列,并使用 `countOnes` 方法计算它们中的 1 的数量。最后,我们打印出结果。注意在打印行和列的时候,需要将它们的下标加 1,因为它们从 0 开始。
阅读全文