我有两个不同大小的整数数组。 我还有第三个整数数组。 我想从前两个数组中取出每个元素,并将它们一个接一个地存储在新数组中。
这是我的代码
int[] a = { 1, 2, 3 };
int[] b = { 5, 6, 7, 8 };
int[] c = new int[100];
int i = 0, j = 0, k, m;
for (k = 0; k < a.Length + b.Length; k=k+2)
{
while (i < a.Length)
{
c[k] = a[i];
i = i + 1;
break;
}
while (j < b.Length)
{
c[k + 1] = b[j];
j = j + 1;
break;
}
}
for (m = 0; m <= a.Length + b.Length; m++)
{
Console.Write(c[m] + " ");
}
现在此代码不会产生所需的输出。第二个到最后一个元素变为0,因为此时第一个数组已经结束。
我想要的输出是{ 1, 5, 2, 6, 3, 7, 8 }
而我得{ 1, 5, 2, 6, 3, 7, 0, 8 }
答案 0 :(得分:0)
你真的不需要嵌套循环,这个算法可能更优: 决定哪个是更短的循环,并复制更短和更长的阵列&#39;值。然后经历较长时间的其余部分。
如果a和b首先出现哪一个然后使用它们的最小长度而不是数组。
int[] a = { 1, 2, 3 };
int[] b = { 5, 6, 7, 8 };
int[] c = new int[a.length + b.length];
int[] shorter = a.length < b.length ? a : b;
int[] longer = a.length < b.length ? b : a;
for (int i = 0; i < shorter.length; i++) {
c[2*i] = shorter[i];
c[2*i+1] = longer[i];
}
for (int i = shorter.length; i < longer.length; i++) {
c[shorter.length+i] = longer[i];
}
for (int m = 0; m < c.length; m++)
{
System.out.println(c[m] + " ");
}