首页 > 解决方案 > 比较循环数组中的元素(java)

问题描述

我正在尝试制定一个 for 循环,该循环将采用一个数组,例如 5 个元素,并允许我将a[0]其视为 aftera[4]a[4]before 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]

将不胜感激您的帮助。

标签: javaarraysfor-loopcircular-reference

解决方案


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确保获得下一个元素。要将元素放在两个位置,2请改为添加或您选择的任何修饰符。

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

输出:

元素 3 和 4 相等。

元素 7 和 0 相等。


推荐阅读