0

我一直在使用数组,我正在尝试找到一种方法来仅使用 for 循环将一个数组复制到另一个数组(我已经在其他线程中看到了诸如 arrayCopy 和克隆之类的东西,但是对于这个练习,我只需要复制使用 for 循环从一个数组到另一个数组)。

现在我的代码正在执行,但只是吐出:“[D@133c5982”。我正在使用的代码是:

public class sorted 
{
    public static void main(String[] args)
    {
        int [] unSortedArray = {8,12,6,5,19};
        System.out.println(copyArray(unSortedArray));
        //System.out.println(sortedArray(unSortedArray));
    }

    public static int[] copyArray(int[] array)
    {
        int [] copyArray;
        copyArray = new int[array.length];
        for (int i = 1; i < array.length; i++)
    {
        copyArray[i] = array[i];
    }
    return copyArray;
}
4

6 回答 6

4

首先,您没有复制整个数组,因为您以 1 开始索引

就像你的代码一样

for (int i = 1; i < array.length; i++)
{
        copyArray[i] = array[i];
}

以 0 开始索引

其次,您可以使用Arrays.deepToString(array)Arrays.toString(array)以可读格式打印数组

于 2013-05-24T06:22:49.020 回答
1

您的代码没问题,它确实复制了数组。当你这样做时System.out.println,它会打印出数组toString()方法的默认实现)。要查看它确实是复制的,您可以这样做

for (int i = 0; i<unsortedArray.length; i++) {
    System.out.println(unsortedArray[i]);
}

for (int i = 0; i<copiedArray.length; i++) {
    System.out.println(copiedArray[i]);
}

编辑:查看您的代码实际打印出来的注释

于 2013-05-24T06:16:45.090 回答
0

尝试这个

 package naveed.workingfiles;

 import java.util.Arrays;

 public class Array 
{
public static void main(String[] args)
{
    int [] unSortedArray = {8,12,6,5,19};
    int [] unSortedCopyArray =new  int [unSortedArray.length];

    //System.out.println(sortedArray(unSortedArray));
    for(int i=0;i<unSortedArray.length;i++)
    {
        unSortedCopyArray[i]=unSortedArray[i];
    }           
    System.out.println(Arrays.toString(unSortedArray));//exist array
    System.out.println(Arrays.toString(unSortedCopyArray));//copied array


}

}
于 2013-05-24T06:24:18.280 回答
0

copyArray返回一个数组,这就是您要打印的内容。您看到的是 Java 虚拟机将对象表示为字符串的方式。@12345 是对象的 ID。

提供的代码没有任何问题,除了末尾的 } (复制时可能省略)。

于 2013-05-24T06:17:52.327 回答
0

打印时,您使用的是数组默认值toString,它不打印字符串的内容。

从 Java 1.5 开始,您可以使用Arrays.toString(array)来获得数组的良好字符串表示。

请参阅此处的 API

使用它System.out.println来获得漂亮的打印输出。

于 2013-05-24T06:18:29.957 回答
0

你所做的是正确的。但是如果你使用它打印一个数组,System.out.println(copyArray(unSortedArray));它只会打印出数组的位置。相反,尝试在 for 循环中打印数组的每个元素。

for (int i = 1; i < array.length; i++)
{
   system.out.println(array[i]);
}
//Arrays.toString(<arrayname>) can also be used in place of the for loop. 

此外,数组索引从 0 开始。因此,您的方法应如下所示。

public static int[] copyArray(int[] array)
{
    int [] copyArray;
    copyArray = new int[array.length];
    for (int i = 0; i < array.length; i++)
{
    copyArray[i] = array[i];
}
return copyArray;
于 2013-05-24T06:18:44.863 回答