用java编写一个测试程序,提示用户输入一个n*n的矩阵,并输入矩阵中的每个值(自定义)。如果这个矩阵中有四个连续的数字相同,输出true,否则输出false。
时间: 2024-09-13 19:18:26 浏览: 94
这是一个涉及二维数组操作和逻辑判断的编程问题。下面是一个简单的Java程序示例,用于检测用户输入的n*n矩阵中是否存在四个连续的相同数字。
```java
import java.util.Scanner;
public class MatrixCheck {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入矩阵的大小n: ");
int n = scanner.nextInt();
int[][] matrix = new int[n][n];
System.out.println("请输入矩阵中的每个值(共n*n个值):");
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
matrix[i][j] = scanner.nextInt();
}
}
boolean hasFourConsecutive = checkMatrix(matrix);
System.out.println("是否存在四个连续的数字相同: " + hasFourConsecutive);
scanner.close();
}
private static boolean checkMatrix(int[][] matrix) {
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[i].length; j++) {
// 检查水平方向
if (j <= matrix[i].length - 4 &&
matrix[i][j] == matrix[i][j + 1] &&
matrix[i][j] == matrix[i][j + 2] &&
matrix[i][j] == matrix[i][j + 3]) {
return true;
}
// 检查垂直方向
if (i <= matrix.length - 4 &&
matrix[i][j] == matrix[i + 1][j] &&
matrix[i][j] == matrix[i + 2][j] &&
matrix[i][j] == matrix[i + 3][j]) {
return true;
}
// 检查对角线方向
if (i <= matrix.length - 4 && j <= matrix[i].length - 4 &&
matrix[i][j] == matrix[i + 1][j + 1] &&
matrix[i][j] == matrix[i + 2][j + 2] &&
matrix[i][j] == matrix[i + 3][j + 3]) {
return true;
}
// 检查反对角线方向
if (i >= 3 && j <= matrix[i].length - 4 &&
matrix[i][j] == matrix[i - 1][j + 1] &&
matrix[i][j] == matrix[i - 2][j + 2] &&
matrix[i][j] == matrix[i - 3][j + 3]) {
return true;
}
}
}
return false;
}
}
```
在这个程序中,我们首先通过`Scanner`类获取用户输入的矩阵大小和矩阵元素。然后,我们定义一个`checkMatrix`方法来检查矩阵中是否存在四个连续的相同数字。我们检查水平、垂直以及两个对角线方向。如果有任何一个方向满足条件,函数返回`true`;否则,遍历结束后返回`false`。