Bonjour à tous,
Je débute dans Java (moins d'un mois) et je n'arrive pas a trouver la solution malgré mes multiples recherche à ce sujet et j'ai un petit soucis de compréhension, je vais mettre le code ici et tenter d'expliquer mon problème.
Cette classe sert à lire un fichier txt qui contient une liste de symptômes, avec plusieurs fois le même symptômes à l'intérieur. Le but étend de récupérer les symptômes sur la liste et de compter le nombre de récurrences et de le classer par ordre alphabétique.
Voici mon code qui me permet de traiter la demande de mon prof :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| package Projet2;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class AnalyticsCounterOK {
public static void main(String[] args) throws IOException {
try {
// read file symptoms
List<String> lines = Files.readAllLines(Paths.get("src/symptoms.txt"));
Map<String, Integer> symptomOccurrence = new HashMap<>();
for (String line : lines) {
if (symptomOccurrence.containsKey(line)) {
symptomOccurrence.put(line, symptomOccurrence.get(line) + 1);
} else {
symptomOccurrence.put(line, 1);
}
}
// System.out.println(symptomOccurrence.toString());
symptomOccurrence.entrySet().stream().sorted(Map.Entry.<String, Integer>comparingByKey())
.forEach(System.out::println);
FileWriter writer = new FileWriter("src/result.out");
writer.write(symptomOccurrence.toString());
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} |
Après retour de mon prof, il m'a fait 2 remarques
1°) Le fichier result.out n'affiche pas les données verticalement contrairement à la console et à la demande du sujet.
2°) Il veut une mise en page type Objet avec class, main, etc...
Donc je reprends mon code
J'ai une première classe, SymptomReader1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| package Projet2.Test1;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
/**
* Simple brute force implementation
*
*/
public class SymptomReader1 implements ISymptomReader1 {
// propieties
private String filepath; // attributs
public SymptomReader1(String filePath) {
this.filepath = filePath;
}
// methode
public Map<String, Integer> getSymptomReader() { // methode d'implementation
// creation d un
Map<String, Integer> symptomReader = new HashMap<>(); // initialisation d'une nouvelle Map
if (filepath != null) {
try {
BufferedReader reader = new BufferedReader(new FileReader(filepath));
String line = reader.readLine();
while (line != null) {
line = reader.readLine();
if (symptomReader.containsKey(line)) {
symptomReader.put(line, symptomReader.get(line) + 1);
} else {
symptomReader.put(line, 1);
}
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return symptomReader;
}
} |
J'ai ensuite mon Main
1 2 3 4 5 6 7 8 9 10 11 12 13
| package Projet2.Test1;
import java.io.IOException;
public class AnalyticsCounter1 {
public static void main(String[] args) throws IOException {
SymptomReader1 sympReader = new SymptomReader1("src/symptoms.txt");
System.out.println(sympReader.getSymptomReader());
}
} |
Qui me permet de lancer mon programme en y spécifiant le fichier txt à traiter.
J'ai 2 problèmes sur lequel je suis coincé depuis plusieurs jours et que malgré la consultation de divers forum, je n'arrive pas a traiter les 2 points suivants.
1°) Mon premier problème est que lorsque je lance mon programme, voici ce qu'affiche la console
null=1, tremor=4, dizziness=5, blindness=1, constricted pupils=3, fever=6, stiff neck=4, cough=6, insomnia=4, nausea=5, low blood pressure=4, rapid heart rate=1, dry mouth=8, anxiety=5, rash=4, shortness of breath=3, arrhythmias=3, inflamation=7, high blood pressure=10, water retention=1, dialated pupils=4, headache=3, stomach pain=3, blurred vision=5}
J'ai un valeur nulle qui est comptabilisée à 1, alors que mon fichier contient 100 lignes, et que les 100 lignes ont un symptôme d'inscrit. Auriez-vous une explication à me donner à ce sujet, car je sèche 
2°) Mon second problème est que je dois trier ma Map par ordre alphabetique, l'afficher à la verticale et l'enregistrer vers un second fichier.
Voilà, je suis un peu perdu dans la découpe de mon code, et le principal problème que j'ai, c'est de convertir mon Map vers une TreeMap.
Désolé pour la longueur du poste, mais j'apprécierait toute l'aide que l'on m'apporte, merci d'avance.
Partager