gpt4 book ai didi

java - 遍历不同长度的并行数组

转载 作者:行者123 更新时间:2023-11-30 06:16:15 24 4
gpt4 key购买 nike

我是初学者,这是我的第一个问题。我已经在网上搜索了答案,但我做空了。你们中的任何人提供的任何帮助都会让我微笑!!

我正在编写一个同时循环两个数组的程序。这些是从用户定义的字符串转换而来的字符数组,因此它们的长度可能不同。以下是我的代码中当前的设置方式。

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
...

你可以看到如果ab是整数且a>=0b>0 ,那么 a%b 将始终在范围内:

0 <= a%b < b

这是长度为 b 的数组的可接受索引范围。

关于java - 遍历不同长度的并行数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27624024/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com