[JAVA] (débutant) Copier un tableau à deux dimensions

Copier un tableau à deux dimensions [JAVA] (débutant) - Java - Programmation

Marsh Posté le 20-11-2004 à 09:37:56    

Salut !
 
J'aimerais savoir si c'est possible de copier des tableaux multidimentionnels ?!
 
J'ai :
 
int dim = x;
 
int[][] tab1 = new int[x][x];
int[][] tab2;
 
J'aimerais copier les valeurs de tab1 dans tab2...
 
Est-ce possible de façon directe (càd genre System.arraycopy(tab1,0,tab2,0,x); ?
Voilà voilà merci bien :)

Reply

Marsh Posté le 20-11-2004 à 09:37:56   

Reply

Marsh Posté le 20-11-2004 à 15:05:32    

Un petit up :(...
 
C'est impossible ? Je sais pas moi, comment ça se fait que personne réponde ? :o Pourtant j'ai vu quelques pros défiler sur le forum depuis ce matin... :heink:

Reply

Marsh Posté le 20-11-2004 à 15:17:39    

en java, les tableaux sont clonables, mais en surface uniquement.
Le JLS précise bien que seule une dimension est clonée dans les tableaux multi-dimentionels ( http://java.sun.com/docs/books/jls [...] html#40879 )
Au passage, je rappelle que les tableaux multi-dimentionnels n'existent pas en java, mais ce sont des tableaux dont le type des éléments est un tableau.
en conséquences la solution doit être un truc du style :

Code :
  1. tab2 = new new int[x][x];
  2. for (int i = 0; i < x; i++)
  3.   tab2[i] = tab1[i].clone();


(pas testé)


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 20-11-2004 à 15:18:20    

agent007se a écrit :

Un petit up :(...
 
C'est impossible ? Je sais pas moi, comment ça se fait que personne réponde ? :o Pourtant j'ai vu quelques pros défiler sur le forum depuis ce matin... :heink:

2 secondes, j'étais parti chier au milieu de ma réponse.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 20-11-2004 à 15:42:39    

lol :lol: bon j'attend la suite sagement alors :) en plus t'a eu le temps d'y penser :p puis j'essaierai ! en tous cas merci :)

Reply

Marsh Posté le 20-11-2004 à 15:46:54    

nan, c'est fini là. on voit pas la transition doigts propres/doigts sales sur internet ...


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 20-11-2004 à 15:56:06    

:D arf ok ! bon bah va falloir essayer ça d'urgence... mais d'abord je dois finir ma méthode pour enregistrer un tableau dans un fichier texte et le charger... mais bon ça je préfère trouver seul :heink:

Reply

Marsh Posté le 20-11-2004 à 19:44:08    

nraynaud a écrit :

en java, les tableaux sont clonables, mais en surface uniquement.
Le JLS précise bien que seule une dimension est clonée dans les tableaux multi-dimentionels ( http://java.sun.com/docs/books/jls [...] html#40879 )
Au passage, je rappelle que les tableaux multi-dimentionnels n'existent pas en java, mais ce sont des tableaux dont le type des éléments est un tableau.
en conséquences la solution doit être un truc du style :

Code :
  1. tab2 = new new int[x][x];
  2. for (int i = 0; i < x; i++)
  3.   tab2[i] = tab1[i].clone();


(pas testé)


 
incompatibles types - found java.lang.Object but expected int[]
 
 :??:
 
 

Code :
  1. public void arraycopy (int [][] M , int [][] X )  {
  2.        for (int r = 0; r < dim; r++){
  3.         for (int c = 0; c < dim; c++){
  4.          for(int i = 0; i < dim; i++){
  5.             X[i] = M[i].clone();
  6.    }}}}


Message édité par agent007se le 20-11-2004 à 19:49:22
Reply

Marsh Posté le 21-11-2004 à 12:53:04    

agent007se a écrit :

incompatibles types - found java.lang.Object but expected int[]

ah oui merde, le cast.

Code :
  1. tab2 = new new int[x][x];
  2. for (int i = 0; i < x; i++)
  3.    tab2[i] = (int []) tab1[i].clone();


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 21-11-2004 à 13:55:37    

nraynaud a écrit :

ah oui merde, le cast.

Code :
  1. tab2 = new new int[x][x];
  2. for (int i = 0; i < x; i++)
  3.    tab2[i] = (int []) tab1[i].clone();




 
NullPointerException à la ligne :

Code :
  1. tab2[i] = (int []) tab1[i].clone();

Reply

Marsh Posté le 21-11-2004 à 13:55:37   

Reply

Marsh Posté le 21-11-2004 à 14:19:15    

ah bah oui, ton tableau est vide là. en fait.
il faut faire une boucle pour allouer les ligness aussi.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 21-11-2004 à 16:51:53    

[:ceam]  
 
Justement, c'est ce que j'arrive pas à faire lol... 'fin bon  :o (je cherche ;) )


Message édité par agent007se le 21-11-2004 à 17:03:10
Reply

Marsh Posté le 21-11-2004 à 19:05:31    

Code :
  1. for (int i =0; i < x; i++)
  2.   tab1[i] = new int[x];


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 21-11-2004 à 19:33:48    

Merci beaucoup  :o !! Je vais pouvoir continuer mon initiation à ce merveilleux langague de prog !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed