Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 以相同顺序重复数组中的元素x次_Java_Arrays - Fatal编程技术网

Java 以相同顺序重复数组中的元素x次

Java 以相同顺序重复数组中的元素x次,java,arrays,Java,Arrays,问题是:编写一个包含两个参数的方法:一个String[]数组,一个int numRepeats表示数组中每个元素的重复次数。返回一个新数组,每个元素重复numRepeats次 例如: repeatElements(new String[]{"hello", "world"}, 3) 应返回包含以下元素的新数组: ["hello", "hello", "hello", "world", "world", "world"] 到目前为止,我掌握的代码是: public String[] repea

问题是:编写一个包含两个参数的方法:一个String[]数组,一个int numRepeats表示数组中每个元素的重复次数。返回一个新数组,每个元素重复numRepeats次

例如:

repeatElements(new String[]{"hello", "world"}, 3)
应返回包含以下元素的新数组:

["hello", "hello", "hello", "world", "world", "world"]
到目前为止,我掌握的代码是:

public String[] repeatElements(String[] array, int numRepeats)
{
    String[] arr = new String[array.length * numRepeats];
    if(numRepeats == 0)
        return arr;

    if(array.length == 0)
        return arr;

    int m = 0;

    for(int i = 0; i < numRepeats; i++)
    {
        arr[m++] = array[0];
    }

    return arr;
}

我的解决方案只适用于某些测试,而不是所有测试。如何修复代码,使其能够解决给定的所有测试?

您的循环只复制数组的第一个元素。你应该把所有的元素复制几次。大概

for (String s : array) {
    for (int i = 0; i < numRepeats; i++) {
        arr[m++] = s;
    }
}

请阅读,对于数组中的每个字符串s,将s分配到arr中的位置m,然后递增m。

您需要另一个嵌套循环来重复数组元素的numRepeats次

按如下方式操作:

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        System.out.println(Arrays.toString(repeatElements(new String[] { "hello", "world" }, 3)));

    }

    static String[] repeatElements(String[] array, int numRepeats) {
        String[] arr = new String[array.length * numRepeats];
        if (numRepeats == 0)
            return arr;

        if (array.length == 0)
            return arr;

        int m = 0;

        for (int i = 0; i < array.length; i++) {
            for (int j = 1; j <= numRepeats; j++) {
                arr[m++] = array[i];
            }
        }

        return arr;
    }
}
for (int j = 1; j <= numRepeats; j++) {
    for (int i = 0; i < array.length; i++) {
        arr[m++] = array[i];
    }
}
嵌套循环也可以按如下方式编写:

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        System.out.println(Arrays.toString(repeatElements(new String[] { "hello", "world" }, 3)));

    }

    static String[] repeatElements(String[] array, int numRepeats) {
        String[] arr = new String[array.length * numRepeats];
        if (numRepeats == 0)
            return arr;

        if (array.length == 0)
            return arr;

        int m = 0;

        for (int i = 0; i < array.length; i++) {
            for (int j = 1; j <= numRepeats; j++) {
                arr[m++] = array[i];
            }
        }

        return arr;
    }
}
for (int j = 1; j <= numRepeats; j++) {
    for (int i = 0; i < array.length; i++) {
        arr[m++] = array[i];
    }
}

似乎需要两个嵌套循环,一个在数组元素上,另一个用于循环numRepeats次,你不这样认为吗?