【问题标题】:Copying Arrays onto another Array?将数组复制到另一个数组?
【发布时间】:2015-03-10 07:43:42
【问题描述】:

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

这是我的代码:

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

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

【问题讨论】:

  • 一定要用数组吗?我会使用一个 ArrayList,当你向它添加数据时它会增长。
  • 您解释了您的任务并展示了一些代码,但您没有告诉我们您当前的解决方案有什么问题。请详细说明您的问题实际上是什么。 :)
  • array2[i] = Arrays.copyOf(array1[i], array1[i]); - 你想在这里做什么?此方法不需要两个整数。
  • @Eran,我想我正在尝试一些随机的东西。我仍然不擅长用 Java 编码。
  • 我想尝试使用循环从第一个数组中的输入数字创建第二个数组。不知道我做的是否正确。

标签: java arrays copying


【解决方案1】:

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

好吧,我修改了你的代码,向你展示了指令 Arrays.copyOf 的用法(你需要导入 java.util.Arrays)。 关键是,您需要将复制指令写出 for 循环。我建议您使用长度属性而不是 for 循环范围内的普通数字。另外,如果要将包括零在内的整个数组 1 复制到数组 2 中,请替换第二个参数:

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

【讨论】:

  • 感谢您帮助我解决这个问题。我在网上寻找一些例子,我有点不想在代码中导入任何东西。在不导入工具的情况下如何做到这一点?我想尝试使用基本概念编写上面的代码。
  • 好吧,创建自己的复制方法(我修改了示例),并将代码替换为array2 = copy(array1, i);
  • 这部分没看懂array2 = copy(array1, i);
  • 在代码中创建新类之前,我没有使用过调用方法。我可以不使用调用方法做某事吗?对不起,如果我似乎问了太多问题。尝试理解 JAVA 编码的概念。
  • 使用与方法相同的代码,但直接在主代码中。我再次修改了示例。您可以看到结果是相同的,但没有方法: int[] array2 = new int[i]; for(int j=0; j
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2017-09-13
    • 2022-07-05
    • 2011-05-08
    • 2013-07-09
    • 1970-01-01
    • 1970-01-01
    • 2023-04-11
    • 1970-01-01
    • 2013-05-28
    相关资源
    最近更新 更多