OBIETTIVI DELLA LEZIONE
In questa lezione non verrà presentato materiale nuovo, ma ci ritroveremo in laboratorio per completare eventuali esercizi rimasti irrisolti dalle scorse esercitazioni. Dal giorno successivo a quello della lezione, la pagina potrebbe contenere soluzioni ad esercizi proposti precedentemente (soluzioni sviluppate durante la lezione).
La soluzione proposta è stata suggerita da uno studente e rivista o corretta durante la lezione. E' uno dei possibili modi di risolvere l'esercizio, non certamente l'unico. Se avete sviluppato altre soluzioni diverse, vanno anch'esse sicuramente benone.
import java.io.*; public class Converti{ // dichiarazione delle variabili public static void main (String[] args) throws IOException { File fileInferno = new File("INFERNO.TXT"); File fileHTML = new File ("index4.html"); FileReader streamInferno = new FileReader(fileInferno); int carattereLetto; boolean cont = false; int num = 0; // verifica dell'esistenza del file .html FileWriter streamHTML = null; try { streamHTML = new FileWriter(fileHTML); } catch(IOException e) { System.out.println("Impossibile aprire il file."); System.out.println("JVM ha sollevato l'eccezione: " + e); System.exit(0); } PrintWriter pwHTML = new PrintWriter(streamHTML); String titolo = "INFERNO :: DIVINA COMMEDIA :: DANTE ALIGHIERI"; // l'header del mio file html e l'inizio del body pwHTML.print("<html>\n<head>\n<title>" + titolo + "</title>\n</head>\n"); pwHTML.print("<body bgcolor=\"#ffffff\">\n"); int numeroAsterischi = 0; // contenuto del body // creazione tabella while( (carattereLetto=streamInferno.read()) != -1 ) { if(carattereLetto == (int)'\n') pwHTML.print("<br>\n"); else if ((carattereLetto == (int)'~') && (cont == false)) { pwHTML.print("<i>"); cont=true; } else if ((carattereLetto == (int)'~') && (cont == true)) { pwHTML.print("</i>"); cont=false; } else if (carattereLetto == (int)' ') pwHTML.print(" "); else if ((carattereLetto == (int)'*') && (numeroAsterischi == 3)) { pwHTML.print("</b>"); numeroAsterischi=0; } else if ((carattereLetto == (int)'*') && (numeroAsterischi == 0)) { pwHTML.print("<b>"); numeroAsterischi++; } else if (carattereLetto == (int)'*') numeroAsterischi++; else pwHTML.write(carattereLetto); } // fine body pwHTML.print("</body>\n</html>"); // chiudiamo lo stream pwHTML.close(); } }
La soluzione proposta è stata suggerita da due studenti e rivista o corretta durante la lezione. E' uno dei possibili modi di risolvere l'esercizio, non certamente l'unico. Se avete sviluppato altre soluzioni diverse, vanno anch'esse sicuramente benone.
import java.io.*; import javax.swing.*; public class TabellaConsumi { public static void main(String[] args) throws IOException { String stringaInput; char comando,risposta; File fileConsumi = new File("consumienel.txt"); risposta = 'a'; comando = 'Z'; while (comando != 'E') { stringaInput = JOptionPane.showInputDialog("PRONTO -> \n" + "premi N per creare un nuovo file\n" + "premi C per cancellare il file\n" + "premi A per aggiungere letture\n" + "premi H per creare la tabella in HTML\n" + "premi E per uscire dal programma"); comando = stringaInput.charAt(0); switch(comando) { case 'E': System.exit(0); break; case 'N': if (fileConsumi.exists() == true) { stringaInput = JOptionPane.showInputDialog("vuoi cancellare il file? premi S per confermare"); risposta = stringaInput.charAt(0); if (risposta == 'S') { fileConsumi.delete(); fileConsumi.createNewFile(); } } else fileConsumi.createNewFile(); break; case 'C': stringaInput = JOptionPane.showInputDialog("vuoi cancellare il file? premi S per confermare"); risposta = stringaInput.charAt(0); if (risposta == 'S') { fileConsumi.delete(); } break; case 'A': FileWriter streamFileConsumi = new FileWriter(fileConsumi,true); PrintWriter pwFileConsumi = new PrintWriter(streamFileConsumi); double g,a,kw,m; stringaInput = JOptionPane.showInputDialog("Dimmi il giorno della lettura : "); g = Double.parseDouble(stringaInput); stringaInput = JOptionPane.showInputDialog("Dimmi il mese della lettura : "); m = Double.parseDouble(stringaInput); stringaInput = JOptionPane.showInputDialog("Dimmi l'anno della lettura : "); a = Double.parseDouble(stringaInput); stringaInput = JOptionPane.showInputDialog("Dimmi i kilowatt della lettura : "); kw = Double.parseDouble(stringaInput); pwFileConsumi.print(g + "\t" + m + "\t" + a + "\t" + kw + "\n"); pwFileConsumi.close(); break; case 'H': File tabHTML = new File("tabellaenel.html"); BufferedReader streamTab = new BufferedReader(new FileReader(fileConsumi)); String lineaLetta; int j,i=1; PrintWriter pwHTML = new PrintWriter (new FileWriter(tabHTML)); pwHTML.print("<html>\n<head>\n<title>Tabella consumi enel</title>\n</head>\n<body>\n<table border=1>"); while( (lineaLetta = streamTab.readLine()) != null ) { i++; String[] porzioniLineaLetta = lineaLetta.split("\t"); pwHTML.print("<tr>\n<td>"+i+"</td>"); for ( j=0 ; j<4 ; j++) { pwHTML.print("<td>"+porzioniLineaLetta[j]+"</td>\n"); } pwHTML.print("</tr>"); } pwHTML.print("</table>\n</body>\n</html>"); pwHTML.close(); break; } } System.exit(0); } }
©2005 Roberto Sassi