TP-metaprogrammation-test/Analyseur.java

57 lines
1.7 KiB
Java
Raw Normal View History

2021-12-03 14:57:00 +00:00
import java.io.*;
import java.util.*;
/** Analyser des données d'un fichier, une donnée par ligne avec 4 informations
* ©parées par des blancs : x, y, ordre (ignorée), valeur.
*/
public class Analyseur {
/** Conserve la somme des valeurs associées à une position. */
private Map<Position, Double> cumuls;
/** Construire un analyseur vide. */
public Analyseur() {
cumuls = new HashMap<>();
}
/** Charger l'analyseur avec les données du fichier "donnees.java". */
public void charger() {
try (BufferedReader in = new BufferedReader(new FileReader("donnees.txt"))) {
String ligne = null;
while ((ligne = in.readLine()) != null) {
String[] mots = ligne.split("\\s+");
assert mots.length == 4; // 4 mots sur chaque ligne
int x = Integer.parseInt(mots[0]);
int y = Integer.parseInt(mots[1]);
Position p = new Position(x, y);
double valeur = Double.parseDouble(mots[3]);
cumuls.put(p, valeur(p) + valeur);
// p.setY(p.getY() + 1); // p.y += 1;
}
} catch (IOException e) {
throw new RuntimeException(e);
}
}
/** Obtenir la valeur associée à une position. */
public double valeur(Position position) {
Double valeur = cumuls.get(position);
return valeur == null ? 0.0 : valeur;
}
/** Obtenir toutes les données. */
public Map<Position, Double> donnees() {
return Collections.unmodifiableMap(this.cumuls);
}
/** Affichier les données. */
public static void main(String[] args) {
Analyseur a = new Analyseur();
a.charger();
System.out.println(a.donnees());
System.out.println("Nombres de positions : " + a.donnees().size());
Position p1 = new Position(1,1);
Position p2 = new Position(2,1);
}
}