Esercizi di ripasso in Laboratorio 2

Martedì, 20 Dicembre 2005

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).

Soluzione all'esercizio 4 della lezione 14

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("&nbsp;");
      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();
  }
}

Soluzione all'esercizio 3 della lezione 16

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