为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

莫回无 2021-08-25 18:14:14
我正在尝试采用两个一维数组并将它们交织在一个新数组中。例如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++;     }
查看完整描述

1 回答

?
ITMISS

TA贡献1871条经验 获得超8个赞

您正在检查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))

 {                 //^^^ 

    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]


查看完整回答
反对 回复 2021-08-25
  • 1 回答
  • 0 关注
  • 128 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信