java - 我将如何创建这个检查数组中整数的循环?

标签 java arrays

我正在做的是创建一个具有一定行数和列数的矩阵,然后用 0 到 9 范围内的随机整数填充该表。我现在要做的是确定是否存在连续的偶数在表中相邻重复四次的整数。例如,这样的事情:

2 5 8 7 1
3 2 9 4 7
5 1 2 0 3
8 0 1 2 7

在该表中,两个连续出现,从第一个位置斜向出现。也可以是这样的:

9 5 3 7 0
2 5 7 3 1
8 5 0 2 9
4 5 1 7 5

在此表中,从第二个位置开始垂直向下显示五个。

我创建了二维数组,如下所示:

public static void main(String[] args) {
    int[][] randomTable = new int[5][5];
    for (int row = 0; row < randomTable.length; row++) {
        for (int column = 0; column < randomTable[row].length; column++) {
            randomTable[row][column] = (int)(Math.random() * 10 + 0);
            System.out.print(randomTable[row][column] + " ");
        }
        System.out.println();
    }       
}

测试数组时,如果数组包含如上所述的四个连续偶数整数,我需要它返回 true。我知道我需要创建一个循环,但我该怎么做?

最佳答案

我可能会考虑采用递归方法来解决这个问题。

您知道,四个“匹配”可以是上、下、左、右以及对角两个方向。这很大程度上效率低下,但我首先想到的是:

randomTable[中的每个int调用一个方法check(int value, int j, int i, int deltaJ, int deltaI, int count); ][]

循环遍历整个随机数数组:

for (int i = 0; i < randomTable.length; i++) {
    for (int j = 0; j < randomTable[i].length; j++) {
        boolean a = check(randomTable[i][j], j, i, 1, 0, 1); // move right 
        System.out.print(a ? "The number " + randomTable[i][j] + "is in a line!" : );
    }
}

然后,递归循环可能如下所示:

boolean check(int value, int j, int i, int deltaJ, int deltaI, int count) {
    if (count == 4) {
        return true;
    }

    try {
        if (randomTable[i + deltaI][j + deltaJ] == value) {
            return check(randomTable[i + deltaI][j + deltaJ], j + deltaJ, i + deltaI, deltaJ, deltaI, count + 1);
        } else {
            return false;
        }
    } catch (ArrayIndexOutOfBoundsException e) {
        return false;
    }
}

关于java - 我将如何创建这个检查数组中整数的循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27155840/

相关文章:

java - 创建基类对象时的运行时多态性

java - 使用 SDK 12 和兼容性库的 Eclipse 导出签名 APK 失败

java - 适用于 OS X、Linux 的更好的 JFileChooser 替代品?

arrays - 数组索引超出范围

c++ - 动态数组 C++ 多项式类

java - 在 Java 中,使用 JPA2,我应该使用哪个类来保存日期信息?

java阻塞队列消费者阻塞在完整队列上

java - 将数组作为线程安全参数传递时出现 ActionListener 错误

java - 将彩色 png 布局图像中的图案读取到数组中?

arrays - Node/Mongoose - 如果更新期间对象尚不存在,则无法在数组中创建对象