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

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


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++;

     }


莫回无
浏览 129回答 1
1回答

ITMISS

您正在检查b.length打击k和a.length反对j。因此,当k成为3你的第二个if将覆盖interleave[i]用b[k]。k并且j应该切换:if (((i % 2 == 0) || (j >= b.length)) && (j < a.length))&nbsp;{&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//^^^&nbsp;&nbsp; &nbsp; interleave[i] = a[j];&nbsp; &nbsp; j++;&nbsp;}&nbsp;if (((i % 2 == 1) || (k >= a.length)) && (k < b.length))&nbsp;{&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //^^^&nbsp; &nbsp; interleave[i] = b[k];&nbsp; &nbsp; k++;&nbsp;}输出:[1, 44, 2, 55, 3, 66, 77, 88]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java