我正在尝试将两个一维数组交织成一个新数组



我正在尝试采用两个一维数组并将它们交织成一个新数组。例如

a = (1,2,3) & b = (44,55,66,77,88)

将这两个阵列交织在一起制成

c = (1,44,2,55,3,66,77,88)

我真诚地相信我已经解决了它,但我无法弄清楚为什么这段代码输出

c/interleave as 1,44,2,55,66,77,88,0

法典:

public static int[] interleave(int[] a, int[] b)
{
int [] interleave = new int [a.length + b.length];
int j = 0, k = 0;
for (int i = 0; i < (a.length + b.length);i++)
{
if (((i % 2 == 0) || (k >= b.length)) && (j < a.length))
{
interleave[i] = a[j];
j++;
}
if (((i % 2 == 1) || (j >= a.length)) && (k < b.length))
{
interleave[i] = b[k];
k++;
}

您正在检查b.lengthka.lengthj。因此,当k变得3您的第二个if将用b[k]覆盖interleave[i]。 应切换kj

if (((i % 2 == 0) || (j >= b.length)) && (j < a.length))
{                 //^^^ 
interleave[i] = a[j];
j++;
}
if (((i % 2 == 1) || (k >= a.length)) && (k < b.length))
{                  //^^^
interleave[i] = b[k];
k++;
}

输出:

[1, 44, 2, 55, 3, 66, 77, 88]

最新更新