比较循环数组中的元素(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.
我正在尝试制定一个 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.