Exporter une matrice d'entier vers un csv
Résolu
lynajar
Messages postés
32
Date d'inscription
Statut
Membre
Dernière intervention
-
lynajar Messages postés 32 Date d'inscription Statut Membre Dernière intervention -
lynajar Messages postés 32 Date d'inscription Statut Membre Dernière intervention -
Bonsoir;
j'ai créer un code qui permet de calculer une matrice de similarité et je veux exporter cette matrice vers un fichier csv, pour pouvoir l'utiliser dans un autre programme,
0 2 4 0
0 0 2 0
0 0 0 3
0 0 0 0
j'ai créer le code suivant mais ça na pas marché,
j'ai besoin d'une aide
j'ai créer un code qui permet de calculer une matrice de similarité et je veux exporter cette matrice vers un fichier csv, pour pouvoir l'utiliser dans un autre programme,
0 2 4 0
0 0 2 0
0 0 0 3
0 0 0 0
j'ai créer le code suivant mais ça na pas marché,
j'ai besoin d'une aide
void Ecrire(){ File file=new File("C:\\Users\\click\\Desktop\\doctorat\\matrice.txt"); try (BufferedWriter bufferedwriter=new BufferedWriter (new FileWriter(file))){ for(int i=0;i<nbl;++i){ for(int j=0;i<nbs;++j){ System.out.print(matsim[i][j]); //bufferedwriter.write(matsim[i][j]); bufferedwriter.write(";"); } } }catch(IOException e){ e.printStackTrace(); } }
A voir également:
- Exporter une matrice d'entier vers un csv
- Exporter favoris chrome - Guide
- Comment exporter les photos de google photo vers l'ordinateur - Guide
- Exporter conversation sms android - Guide
- Exporter favoris firefox - Guide
- Exporter calendrier outlook vers google agenda - Guide
2 réponses
Bonjour,
Lorsque tu ajoutes un entier dans un fichier, c'est la valeur de l'octet qui est ajouté, pas sa représentation en caractères.
Par exemple : si tu ajoutes l'entier 42 ça ajoutera le caractère '*' alors que toi tu veux ajouter le caractère '4' puis le caractère '2' (dont les valeurs sont respectivement 54 et 52).
Remarque :
Dans ta ligne 6, tu fais
De plus, tu devrais avoir un saut de ligne quelque part, sinon tout va s'écrire à la suite.
Exemple :
Remarque : les Stream permettent de traiter efficacement ce genre de problèmes, même si je comprends bien que ça peut être compliqué pour un débutant. Exemple :
Lorsque tu ajoutes un entier dans un fichier, c'est la valeur de l'octet qui est ajouté, pas sa représentation en caractères.
Par exemple : si tu ajoutes l'entier 42 ça ajoutera le caractère '*' alors que toi tu veux ajouter le caractère '4' puis le caractère '2' (dont les valeurs sont respectivement 54 et 52).
Remarque :
Dans ta ligne 6, tu fais
i<nbsalors que ça devrait être
j<nbs(tu as inversé i et j)
De plus, tu devrais avoir un saut de ligne quelque part, sinon tout va s'écrire à la suite.
Exemple :
public static void exportToCsv(int[][] matrix, String fileName) throws IOException { try (PrintWriter pw = new PrintWriter(fileName)) { for (int row = 0; row < matrix.length; row++) { if (row > 0) { pw.println(); } for (int column = 0; column < matrix[row].length; column++) { if (column > 0) { pw.print(';'); } pw.print(String.valueOf(matrix[row][column])); } } } }
Remarque : les Stream permettent de traiter efficacement ce genre de problèmes, même si je comprends bien que ça peut être compliqué pour un débutant. Exemple :
public static void exportToCsv(int[][] matrix, String fileName) throws IOException { Files.write(Paths.get(fileName), Arrays.stream(matrix).map(row -> Arrays.stream(row) .mapToObj(String::valueOf) .collect(Collectors.joining(";")) ).collect(Collectors.toList())); }