2011-06-30 10 views
11

Po uruchomieniu następującego kodu nic nie zostanie skopiowane - co robię źle?Najlepszy sposób kopiowania z jednej tablicy na inną

Czy jest to również najlepszy/najbardziej efektywny sposób kopiowania danych z jednej tablicy do drugiej?

public class A { 
    public static void main(String args[]) { 
     int a[] = { 1, 2, 3, 4, 5, 6 }; 
     int b[] = new int[a.length]; 

     for (int i = 0; i < a.length; i++) { 
      a[i] = b[i]; 
     } 
    } 
} 
+5

er, czy tego nie zrobiłeś? – zellio

+0

Jaki problem widzisz? Twój kod wygląda dobrze (szukasz System.arraycopy()?) – rsp

+1

@Mimi, @rsp - w jego kodzie jest błąd! –

Odpowiedz

18

Myślę, że zadanie jest wstecznie:

a[i] = b[i];

powinno być:

b[i] = a[i];

71

Istnieje wiele rozwiązań:

b = Arrays.copyOf(a, a.length); 

Która przydziela nową tablicę, kopiuje elementy a i zwraca nową tablicę.

Albo

b = new int[a.length]; 
System.arraycopy(a, 0, b, 0, b.length); 

których kopie zawartości tablicy źródłowej do tablicy docelowej, które można przydzielić siebie.

Albo

b = a.clone(); 

która działa bardzo podobnie Arrays.copyOf(). Zobacz this thread.

Lub ten, który wysłałeś, jeśli odwrócisz kierunek zadania w pętli.

Powiązane problemy