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

比较循环数组中的元素(java),java,arrays,for-loop,circular-reference,Java,Arrays,For Loop,Circular Reference,我正在尝试建立一个for循环,它将采用一个数组,例如5个元素,并允许我将a[0]视为在a[4]之后,将a[4]视为在a[0]之前 我无法更改数组,它在每个元素中存储一个线程,因此我希望尽可能简单地不损坏线程的内容(线程是同步的,并使用reentrantlock-因此问题只与数组有关) 我想简化for循环: for (int i = 0; i < ARRAYSIZE; i++) for(int i=0;i

我正在尝试建立一个for循环,它将采用一个数组,例如5个元素,并允许我将
a[0]
视为在
a[4]
之后,将
a[4]
视为在
a[0]
之前

我无法更改数组,它在每个元素中存储一个线程,因此我希望尽可能简单地不损坏线程的内容(线程是同步的,并使用reentrantlock-因此问题只与数组有关)

我想简化for循环:

for (int i = 0; i < ARRAYSIZE; i++)
for(int i=0;i
让我把它当作一个循环数组。我曾想过使用mudolo操作来实现这一点,但这也行不通。以下是我尝试过的:

for (int i = i+1 % n; i < ARRAYSIZE; i++)
for(int i=i+1%n;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);
        }
    }
}
publicstaticvoidmain(字符串[]args){
int[]arr={1,5,4,3,3,4,3,1};
int ARRAYSIZE=arr.length;
for(int i=0;i
请注意,对于要循环使用的上限值,需要执行
(i+1)%ARRAYSIZE
,以确保获得下一个元素。若要将元素放置在两个位置,请添加
2
,或者选择任何修改器

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

输出:

元素3和4相等

元素7和0相等


a[i%5]——你所说的周期性究竟是什么意思?当
i
false
时,是否希望循环终止?此处是否允许其他数据结构?(你告诉我。)我想知道循环链表是否比数组更合适。谢谢你的评论,但问题是关于数组的。下次链接列表:)非常感谢!如果我以后遇到这个话题,我可以问更多的问题吗?@proggy如果这个话题是全新的,那么最好提出一个新的问题,以获得更多的回应,但是如果它是相关的,请随时在这里问我。我一直对你的解决方案有疑问。您已经帮助我处理了upperindex,但是关于lowerindex,至少对我来说有一个问题:因为int indexLower=(i-1)%ARRAYSIZE;我们得到i-1等于-1,这是越界的。如何解决它?@proggy如果你让它循环,为什么你要试图去后面?它将以
i+1
循环,并返回相同的结果。@例如,如果要比较它之前和之后的值,只需将
i+1
i
i+2
进行比较,结果将是相同的。