将两个int数组连接并排序到一个int数组中

时间:2013-05-13 21:10:16

标签: java arrays sorting

我知道有类似的问题已被问及我已经研究过这个网站。我试图使用一些答案,但我的语法仍然无法正常工作。

我正在阅读以前的试卷,以帮助我建立自己的Java知识。 请原谅我的代码中的任何错误,我仍在学习Java语法。

这是我的问题:

实现一个方法static int [] splice(int [] v,int [] w)(假设v和w的长度相同)返回一个数组,其中v和w的元素是交错的,从使用v的第一个元素,然后是w的第一个元素,接着是v的第二个元素,等等。 例如,如果v = {1,3,5}且w = {2,4,6},则调用拼接应返回{1,2,3,4,5,6}。

如果输入数组的长度不同,则该方法应返回null。

这是我的代码:

import java.util.*;

public class TwoArraysBecomeOne {

public static void main(String[] args) {

    int[] v = { 1, 3, 5 };
    int[] w = { 2, 4, 6 };

    splice(v,w);
}

public static int[] splice(int[] v, int[] w){

    if(v != w) {
        return null;
    }

    int[] x = new int[v.length + w.length];

    for (int i = 0; i < v.length; i++) {
        x[i] = v[i] + w[i];
    }

    for (int j = 0; j < x.length; j++) {
        System.out.println(x[j]);
    }

    return x;

    }
}

我知道我当前的语法正在生成一个新数组x = {3,7,11}。 我已经删除了尝试连接我的代码的各种尝试,因为这导致了我的代码中的错误。我只需要一些指示来帮助回答这个问题。

再次,请原谅我的代码中的任何错误,我还在学习Java。

谢谢。

2 个答案:

答案 0 :(得分:2)

你只是有一个小错误,你不想总结数组的元素,而是将它们并排放在新数组中

for (int i = 0; i < v.length; i++) {
    x[i*2] = v[i];
    x[i*2+1] = w[i];
}

答案 1 :(得分:2)

试试这个

public static void main(String[] args) throws Exception {
    int[] v = { 1, 3, 5 };
    int[] w = { 2, 4, 6 };
    int[] res = splice(v, w);
    System.out.println(Arrays.toString(res));
}

private static int[] splice(int[] v, int[] w) {
    if (v.length != w.length) {
        return null;
    }
    int[] a = new int[v.length + w.length];
    for (int i = 0; i < v.length; i++) {
        a[i * 2] = v[i];
        a[i * 2 + 1] = w[i];
    }
    return a;
}

输出

[1, 2, 3, 4, 5, 6]