将数组复制到另一个数组?
Copying Arrays onto another Array?
我有一个问题:我想要一个要复制到另一个数组的数组,这样当用户在第一个数组中输入内容并想要添加更多项(在另一个数组中)时,它不会完全删除用户最初拥有的内容。
这是我的代码:
System.out.println("Input up to '10' numbers for current array: ");
int[] array1;
array1 = new int[10];
Scanner scan = new Scanner(System.in);
for (int i = 0; i < 10; i++) {
System.out.println((i+1)+": ");
int input = scan.nextInt();
if (input == 0) {
break;
} else {
array1[i] = input;
}
int[][] array2 = new int[2][];
for (i = 0; i <3; i ++){
array2[i] = Arrays.copyOf(array1[i], array1[i]);
}
}
}
}
编辑:第二部分我试图将第一个数组循环到第二个数组中。
我知道你的问题是将输入保存在第一个数组中,最大值,但如果你输入零可能会退出。然后将数据从 array1 复制到 array2 中,并插入数据的大小。正确吗?
好吧,我修改了你的代码,向你展示了指令 Arrays.copyOf 的用法(你需要导入 java.util.Arrays)。
关键是,您需要将复制指令写出 for 循环。我建议您使用长度 属性 而不是 for 循环范围内的普通数字。另外,如果要将包含零的整个array1复制到array2中,请替换第二个参数:
array2 = Arrays.copyOf(array1, array1.length);
这是代码:
public static void main(String[] args) {
System.out.println("Input up to '10' numbers for current array: ");
//Declaring array1 and scanner
int[] array1 = new int[10];
int i;
Scanner scan = new Scanner(System.in);
//Your loop to ask for data into array1
for (i = 0; i < array1.length; i++) {
System.out.print((i+1)+": ");
int input = scan.nextInt();
if (input == 0) {
break;
} else {
array1[i] = input;
}
}
//Copy array1 into array2
int[] array2 = new int[i];
for(int j=0; j<i;j++){
array2[j] = array1[j];
}
//array2 = Arrays.copyOf(array1, i);
// array2 = copy(array1, i);
//Print out the second array, only for test
for (int j = 0; j < array2.length; j++) {
System.out.println(array2[j]);
}
scan.close();
}
public static int[] copy(int [] source, int len){
int [] target = new int[len];
for(int i=0; i<len;i++){
target[i] = source[i];
}
return(target);
}
使用 System.arrayCopy() 执行此操作。
我有一个问题:我想要一个要复制到另一个数组的数组,这样当用户在第一个数组中输入内容并想要添加更多项(在另一个数组中)时,它不会完全删除用户最初拥有的内容。
这是我的代码:
System.out.println("Input up to '10' numbers for current array: ");
int[] array1;
array1 = new int[10];
Scanner scan = new Scanner(System.in);
for (int i = 0; i < 10; i++) {
System.out.println((i+1)+": ");
int input = scan.nextInt();
if (input == 0) {
break;
} else {
array1[i] = input;
}
int[][] array2 = new int[2][];
for (i = 0; i <3; i ++){
array2[i] = Arrays.copyOf(array1[i], array1[i]);
}
}
}
}
编辑:第二部分我试图将第一个数组循环到第二个数组中。
我知道你的问题是将输入保存在第一个数组中,最大值,但如果你输入零可能会退出。然后将数据从 array1 复制到 array2 中,并插入数据的大小。正确吗?
好吧,我修改了你的代码,向你展示了指令 Arrays.copyOf 的用法(你需要导入 java.util.Arrays)。 关键是,您需要将复制指令写出 for 循环。我建议您使用长度 属性 而不是 for 循环范围内的普通数字。另外,如果要将包含零的整个array1复制到array2中,请替换第二个参数:
array2 = Arrays.copyOf(array1, array1.length);
这是代码:
public static void main(String[] args) {
System.out.println("Input up to '10' numbers for current array: ");
//Declaring array1 and scanner
int[] array1 = new int[10];
int i;
Scanner scan = new Scanner(System.in);
//Your loop to ask for data into array1
for (i = 0; i < array1.length; i++) {
System.out.print((i+1)+": ");
int input = scan.nextInt();
if (input == 0) {
break;
} else {
array1[i] = input;
}
}
//Copy array1 into array2
int[] array2 = new int[i];
for(int j=0; j<i;j++){
array2[j] = array1[j];
}
//array2 = Arrays.copyOf(array1, i);
// array2 = copy(array1, i);
//Print out the second array, only for test
for (int j = 0; j < array2.length; j++) {
System.out.println(array2[j]);
}
scan.close();
}
public static int[] copy(int [] source, int len){
int [] target = new int[len];
for(int i=0; i<len;i++){
target[i] = source[i];
}
return(target);
}
使用 System.arrayCopy() 执行此操作。