Exporter une matrice d'entier vers un csv
Résolu
lynajar
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
-
lynajar Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
lynajar Messages postés 2 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();
}
}
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 faisi<nbs
alors que ça devrait êtrej<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())); } -
Bonjour;
merci KX pour ton aide,
le programme s’exécute très bien .