作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是初学者,这是我的第一个问题。我已经在网上搜索了答案,但我做空了。你们中的任何人提供的任何帮助都会让我微笑!!
我正在编写一个同时循环两个数组的程序。这些是从用户定义的字符串转换而来的字符数组,因此它们的长度可能不同。以下是我的代码中当前的设置方式。
for(int i = 0; i < charArray1.length; i++)
{
char keyChar = charArray1[i];
char messageChar = charArray2[i];
}
考虑上面的例子。让我们说:
charArray1 = {'A','B','C','D'} 和
charArray2 = {'1','2','3','4','5','6','7}
目前,这种情况会向我抛出一个越界异常,这是应该的。我希望看到的是一个循环返回到 charArray1 的开头,而另一个循环继续到 charArray2 的结尾。
如果我要打印它,它可能看起来像下面这样。
A1、B2、C3、D4、A5、B6、C7
如有任何帮助,我们将不胜感激。我从事此工作已有一段时间了。
最佳答案
您希望从循环中进行的迭代次数是最长数组的长度。您可以使用 Math.max(charArray1.length, charArray2.length);
然后你想获取索引i
处的数组项,但当它超过数组长度时循环。您可以使用 arr[i%arr.length]
获取它。
组合:
int m = Math.max(charArray1.length, charArray2.length);
for (int i = 0; i < m; ++i) {
char keyChar = charArray1[i%charArray1.length];
char messageChar charArray2[i%charArray2.length];
}
编辑:
模运算符 (a%b
) 为您提供将 a
除以 b
后剩余的数量。
例如,b=3
:
a a%3
0 0
1 1
2 2
3 0
4 1
5 2
...
你可以看到如果a
和b
是整数且a>=0
和b>0
,那么 a%b
将始终在范围内:
0 <= a%b < b
这是长度为 b
的数组的可接受索引范围。
关于java - 遍历不同长度的并行数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27624024/
我是一名优秀的程序员,十分优秀!