Выкарыстоўваючы цыкл для капіявання аднаго масіва ў іншы

Я працую з масівамі, і я спрабую знайсці спосаб, каб скапіяваць адзін масіў у іншую выключна для цыклу (я бачыў такія рэчы, як ArrayCopy і клон іншых патокаў, але для гэтага практыкаванні мне трэба проста скапіяваць з аднаго масіва ў іншы з дапамогай для цыклу).

Зараз мой код выконваецца, але проста плюе на гэта: «[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;
}
0
Вы не можаце надрукаваць масіў, як гэта. Пятля праз яго друку поэлементно або пераўтварыць у радок.
дададзена аўтар sashkello, крыніца
Гэта па змаўчанні ToString() рэалізацыя для масіваў. Вы павінны выкарыстоўваць Arrays.toString (масіў) .
дададзена аўтар Vulcan, крыніца

6 адказы

Перш за ўсё, вы <�моцны> не капіяваць увесь масіў, як вы пачынаеце свой індэкс з 1

як у вашым кодзе

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

пачаць з індэксам 0

і другі вы можаце выкарыстоўваць Arrays.deepToString (масіў) або Arrays.toString (масіў) для друку масіва ў чытаная фармаце

4
дададзена
Дзякуй за паказ мне метад deepToString , я не ведаў пра яго існаванне!
дададзена аўтар vikingsteve, крыніца
няма праблем! калі гэты адказ на ваша пытанне вырашана, то, калі ласка, прыміце яго, націснуўшы галачку зрабіць на левы адказ
дададзена аўтар ajduke, крыніца
Не бачыў гэтую памылку, дзякуй за плямістасць, што!
дададзена аўтар Shotgam, крыніца

Ваш код ОК, ён робіць копію масіва. Калі вы робіце System.out.println ён друкуе рэалізацыю па змаўчанні масіва ToString() метад). Для таго, каб пераканацца, што ён сапраўды скапіяваны, вы можаце зрабіць

for (int i = 0; i

EDIT: убачыць каментары для таго, што вы на самай справе код друкуе

1
дададзена
На самай справе, яна выводзіць з аб'екта масіва ToString , які з'яўляецца тып подпісы плюс хэш-код для аб'екта, які можа ці не можа быць адрасам.
дададзена аўтар Lawrence Dol, крыніца
Дзякуй за тлумачэнні :-) Я буду рэдагаваць адказ
дададзена аўтар chopchop, крыніца

паспрабуйце гэта

 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
0
дададзена
@Makoto не яго нармальна?
дададзена аўтар KhAn SaHaB, крыніца
для і яго bit..for новы яго дастаткова добра.
дададзена аўтар KhAn SaHaB, крыніца
Неа - вы можаце надрукаваць масіў у адзін праход без выкарыстання цыкла.
дададзена аўтар Makoto, крыніца
Зараз гэта крыху лепш.
дададзена аўтар Makoto, крыніца

copyArray returns an array and that's what you are printing. What you see is the Java Virtual Machine way of representing objects as strings. @12345 is the object's ID.

Там няма нічога дрэннага з кодам пры ўмове, за выключэннем} у канцы (магчыма, апушчана пры капіяваньні).

0
дададзена

Тое, што вы зрабілі правільна. Але калі вы надрукаваць масіў, выкарыстоўваючы System.out.println (copyArray (unSortedArray)); ён выводзіць толькі размяшчэнне масіва. Замест гэтага, паспрабуйце друкаваць кожны элемент масіва ў цыкле.

for (int i = 1; i < array.length; i++)
{
   system.out.println(array[i]);
}
//Arrays.toString() 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;
0
дададзена
Не, я быў выключаны. Я вярнуўся, раздрукаваў шаснаццатковае значэнне хэш-кода, і яны супадаюць.
дададзена аўтар Makoto, крыніца
@Makoto О. Я заўсёды думаў, што гэта хэш value.Thanks для інфармацыі.
дададзена аўтар Adarsh, крыніца
@Makoto Ааа. Такім чынам, гэта як хэш-код шаснаццатковай значэння і памяць location.Or толькі хэш-значэнне?
дададзена аўтар Adarsh, крыніца

Пры друку вы карыстаецеся масівы па змаўчанні ToString , які не друкуе змесціва радкоў.

Паколькі Java 1.5 вы можаце выкарыстоўваць Arrays.toString (масіў) , каб атрымаць добры радковае ўяўленне масіва.

See the API here.

Выкарыстоўвайце гэта з System.out.println , каб атрымаць добры адбітак.

0
дададзена