package soluzione10072017; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import java.util.ArrayList; import java.util.HashMap; public class Soluzione1TestoAMain { public static void main(String[] args) { HashMap> rischi = new HashMap<>(); try (BufferedReader br = new BufferedReader(new FileReader("src/soluzione10072017/A.txt")); PrintWriter pw1 = new PrintWriter(new FileWriter("src/soluzione10072017/SoluzioneA1-1.txt")); PrintWriter pw2 = new PrintWriter(new FileWriter("src/soluzione10072017/SoluzioneA1-2.txt")); PrintWriter pw3 = new PrintWriter(new FileWriter("src/soluzione10072017/SoluzioneA1-3.txt")); PrintWriter pw4 = new PrintWriter(new FileWriter("src/soluzione10072017/SoluzioneA1-4.txt")); PrintWriter pw5 = new PrintWriter(new FileWriter("src/soluzione10072017/SoluzioneA1-5.txt"))) { String line = br.readLine(); ArrayList indici = null; String nome; String[] dati; String nomeIndice; int puntIndice; String puntDecimi; Soluzione1TestoAIndice indice; while (line != null) { if (!line.isEmpty()) { nome = line.split(":")[0].trim(); if (rischi.get(nome) == null) { indici = new ArrayList<>(); rischi.put(nome, indici); dati = line.split(":")[1].split(";"); for (int i = 0; i < dati.length; i++) { nomeIndice = dati[i].split(",")[0].trim(); puntDecimi = dati[i].split(",")[1].trim(); puntIndice = Integer.parseInt(puntDecimi.split("/")[0].trim()); indice = new Soluzione1TestoAIndice(nomeIndice, puntIndice); indici.add(indice); } } else { dati = line.split(":")[1].split(";"); for (int i = 0; i < dati.length; i++) { nomeIndice = dati[i].split(",")[0].trim(); puntDecimi = dati[i].split(",")[1].trim(); puntIndice = Integer.parseInt(puntDecimi.split("/")[0].trim()); indice = new Soluzione1TestoAIndice(nomeIndice, puntIndice); rischi.get(nome).add(indice); } } } line = br.readLine(); } for (String s : rischi.keySet()) { System.out.println(s + ":"); for (Soluzione1TestoAIndice i : rischi.get(s)) { System.out.println(i.getNome() + " = " + i.getPunteggio()); } System.out.println(); } System.out.println(); //PUNTO1 System.out.println("Indici di rischio per ogni persona: "); pw1.println("Indici di rischio per ogni persona: "); for (String s : rischi.keySet()) { System.out.print(s + ":"); pw1.print(s + ":"); for (Soluzione1TestoAIndice i : rischi.get(s)) { System.out.print(i.getNome() + " "); pw1.print(i.getNome() + " "); } System.out.println(); pw1.println(); } System.out.println(); //PUNTO2 System.out.println("Valore percentuale degli indici di rischio per ciascuna persona: "); pw2.println("Valore percentuale degli indici di rischio per ciascuna persona: "); double percentuale = 0; for (String s : rischi.keySet()) { System.out.println(s + ":"); pw2.println(s + ":"); for (Soluzione1TestoAIndice i : rischi.get(s)) { percentuale = i.getPunteggio() * 100 / 10; System.out.println(i.getNome() + ": " + percentuale + "%"); pw2.println(i.getNome() + " " + percentuale + "%"); } System.out.println(); pw2.println(); } System.out.println(); //PUNTO3 System.out.println("Persone che hanno un rischio medio superiore all'80% : "); pw3.println("Persone che hanno un rischio medio superiore all'80% : "); double somma = 0; double nPunteggi = 0; double media = 0; for (String s : rischi.keySet()) { somma = 0; nPunteggi = 0; media = 0; for (Soluzione1TestoAIndice i : rischi.get(s)) { somma += i.getPunteggio(); nPunteggi++; } media = somma / nPunteggi; if (media * 100 / 10 > 80) { System.out.println(s); pw3.println(s); } } System.out.println(); //PUNTO4 System.out.println("Numero di persone che hanno un punteggio associato ad ogni indice: "); pw4.println("Numero di persone che hanno un punteggio associato ad ogni indice: "); ArrayList nomeRischio = new ArrayList<>(); for (String s : rischi.keySet()) { for (Soluzione1TestoAIndice i : rischi.get(s)) { if (!nomeRischio.contains(i.getNome())) { nomeRischio.add(i.getNome()); } } } HashMap indicePersone = new HashMap<>(); int count = 0; for (String name : nomeRischio) { for (String s : rischi.keySet()) { for (Soluzione1TestoAIndice i : rischi.get(s)) { if (name.equals(i.getNome())) { count++; break; } } } indicePersone.put(name, count); count = 0; } for (String name : indicePersone.keySet()) { System.out.println(name + ": " + indicePersone.get(name)); pw4.println(name + ": " + indicePersone.get(name)); } System.out.println(); //PUNTO5 String[][] tabella = new String[rischi.keySet().size()][nomeRischio.size()]; int i = 0; int j = 0; boolean ok; for (String s : rischi.keySet()) { j = 0; for (String name : nomeRischio) { ok = false; for (Soluzione1TestoAIndice r : rischi.get(s)) { if (r.getNome().equals(name)) { tabella[i][j] = String.valueOf(r.getPunteggio() * 100 / 10); ok = true; break; } } if (!ok) { tabella[i][j] = "-"; } j++; System.out.println(name); } i++; System.out.println(s); } System.out.println("Tabella : "); for (int k = 0; k < tabella.length; k++) { for (int w = 0; w < tabella[k].length; w++) { System.out.print(tabella[k][w] + " "); pw5.print(tabella[k][w] + " "); } System.out.println(); pw5.println(); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }