IT序号网

java之以交替方式合并两个数组

shangdawei 2024年11月01日 编程语言 35 0

我试图合并到具有相同大小的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+中的 ,请使用 flatMapIntStream
static int[] mergeArray(int[] arr1, int[] arr2) { 
    return IntStream.range(0, arr1.length) 
            .flatMap(i -> IntStream.of(arr1[i], arr2[i])).toArray(); 
} 

对于相同的结果。


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!