将数组复制到另一个数组?

时间:2015-03-10 07:43:42

标签: java arrays copying

我有一个问题:我想要一个我要复制到另一个数组的数组,这样当用户在第一个数组中输入内容并想要添加更多项目时(在另一个数组中)它并不完全擦除用户最初的内容。

这是我的代码:

    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]);
        }
        }
    }
}

编辑:第二部分我尝试将第一个数组循环到第二个数组中。

2 个答案:

答案 0 :(得分:0)

我知道你的问题是将输入保存在具有最大值的第一个数组中,但是如果你输入零则可以退出。然后将数据从array1复制到array2中,插入数据的大小。这是对的吗?

好吧,我修改了你的代码,向你展示Arrays.copyOf指令的使用(你需要导入java.util.Arrays)。   关键是,您需要从for循环中编写复制指令。我建议你使用length属性而不是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);
}

答案 1 :(得分:0)

使用System.arrayCopy()执行此操作。