Java 以相同顺序重复数组中的元素x次
问题是:编写一个包含两个参数的方法:一个String[]数组,一个int numRepeats表示数组中每个元素的重复次数。返回一个新数组,每个元素重复numRepeats次 例如: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
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次,你不这样认为吗?