我试图合并到具有相同大小的int类型的数组。这是我的代码
public class classA
{
static int[] mergeArray(int[] arr1, int arr2[])
{
int arr3[] = new int[arr1.length+ arr2.length];
int count = 0;
for(int i = 0; i < arr1.length; i++){
arr3[count] = arr1[i];
count++;
arr3[count] = arr2[i];
}
for(int i = 0; i < arr3.length; i++){
System.out.print(arr3[i]);
}
return arr3;
}
public static void main(String[] args) throws IOException
{
int arr1[] = {1,2,3};
int arr2[] = {4,5,6};
int arr3[] = mergeArray(arr1,arr2);
}
}
当我尝试首先在循环中打印数字时,它会给我1,4,2,5,3,6正确的输出。但是,当我尝试在第一个for循环之外打印它时,它会给我输出1,2,3,6,0,0。有人能帮我吗?
TIA
请您参考如下方法:
在for
循环中,从arr2
复制时,您需要增加count
。
arr3[count] = arr2[i];
count++;
您还可以将代码简化一下,
static int[] mergeArray(int[] arr1, int[] arr2) {
int[] arr3 = new int[arr1.length * 2];
int count = 0;
for (int i = 0; i < arr1.length; i++) {
arr3[count++] = arr1[i];
arr3[count++] = arr2[i];
}
return arr3;
}
和
print
中的
main
一样
int arr3[] = mergeArray(arr1, arr2);
System.out.println(Arrays.toString(arr3));
Java 8+中的 或,请使用
flatMap
和
IntStream
static int[] mergeArray(int[] arr1, int[] arr2) {
return IntStream.range(0, arr1.length)
.flatMap(i -> IntStream.of(arr1[i], arr2[i])).toArray();
}
对于相同的结果。