比较循环数组中的元素(java)

Comparing elements in a circular array(java)

我正在尝试制定一个 for 循环,它将采用一个数组,例如 5 个元素,并允许我将 a[0] 视为在 a[4] 之后,并且 a[4] 就像在 a[0].

之前一样

我不能改变数组,它在每个元素中存储一个线程,所以我宁愿让它尽可能简单,不要破坏线程的内容(线程是同步的并使用重入锁 - 所以问题是仅关于数组)。

我想让这个简单的 for 循环:

for (int i = 0; i < ARRAYSIZE; i++)

允许我将其视为循环数组。我想过使用 mudolo 操作来实现这一点,但这也不起作用。这是我尝试过的:

for (int i = i+1 % n; i < ARRAYSIZE; i++)

但这也行不通。我想做的基本上是检查 array[i] 是否大于 array[i+1]array[i-1].

感谢您的帮助。

根据数组的大小对循环变量i使用取模运算符:

public static void main(String [] args) {

    int [] arr = {1, 5, 4, 3, 3, 4, 3, 1};
    int ARRAYSIZE = arr.length;

    for (int i = 0; i < ARRAYSIZE; i++) {
        int index = i % ARRAYSIZE;
        int indexUpper = (i + 1) % ARRAYSIZE;
        //access array using index
        if (arr[index] == arr[indexUpper]) {
            System.out.format("Elements %d and %d are equals.\n", index, indexUpper);
        }
    }
}

请注意,对于要循环的上限值,您需要执行 (i + 1) % ARRAYSIZE 以确保获得下一个元素。要覆盖 two 元素,请添加 2 或您选择的任何修饰符。

此测试显示元素 7 和 0 是如何相等的,因为它是循环的。

输出:

Elements 3 and 4 are equals.

Elements 7 and 0 are equals.