java - 比较循环数组中的元素(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]
。
将不胜感激您的帮助。
解决方案
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 相等。
推荐阅读
- python - 按列表列表中的索引计算最小值或最大值
- java - 如何为 java 版本 10 安装 JDBC 驱动程序
- reactjs - 通过标题 ReactJS 滚动重叠
- c++ - 通过 OpenSSL C++ 从证书中获取颁发者证书
- c# - 无法创建新的 Active Directory 组。C# 和 LDAP
- python - swift python奇怪的输出
- r - How do I convert multiple pdf's into a corpus for text analysis in R?
- php - 在 Apache 中接收 404 错误 - 生产中的 Cakephp 3 后端
- javascript - bootstrap carousel's indicator background color filling animation
- ios - 在 Safari (iPad) 中重叠的弹性项目