0

私は配列を扱ってきましたが、for ループのみを使用してある配列を別の配列にコピーする方法を見つけようとしています (他のスレッドで arrayCopy や clone などを見てきましたが、この演習では単にコピーする必要があります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

copyArray配列を返し、それがあなたが印刷しているものです。ご覧のとおり、オブジェクトを文字列として表現する Java 仮想マシンの方法です。@12345 はオブジェクトの ID です。

最後の } を除いて、提供されたコードに問題はありません (コピー中に省略される可能性があります)。

于 2013-05-24T06:17:52.327 に答える
0

toString印刷するときは、文字列の内容を印刷しない配列のデフォルトを使用しています。

Java 1.5 以降Arrays.toString(array)、配列の優れた String 表現を取得するために使用できます。

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 に答える
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 に答える