|
LIA - DEIS - Facoltà di Ingegneria - Università di Bologna Fondamenti di Informatica A - II° Modulo |
|
|
Scrivere un filtro che prenda l'ingresso da System.in
e ponga la propria uscita sia su System.out che sul file il cui nome
è passato come primo argomento di invocazione (si controlli il numero degli
argomenti).
Il filtro deve eliminare tutti i caratteri in ingresso il cui carattere precedente
è un carattere maiuscolo
(cioè un carattere nel range ‘A’-‘Z’).
Ad esempio, il filtro, invocato con argomento fileout.txt, deve trasformare i caratteri forniti da console:
"Esame di Fondamenti di Informatica A II" in
"Eame di Fndamenti di Iformatica AI"
Il risultato dell'elaborazione deve essere scritto sia su System.out che su fileout.txt.
package filtro;
import java.io.*;
public class Filtro1 {
public static void main(String[] args) {
int totale=0; FileWriter file = null;
if (args.length != 1) {
System.out.println("Problemi di argomenti\n sono" + args.length);
System.exit(1); }try { file = new FileWriter (args[0]); }
catch (IOException e)
{System.out.println("Errore. Problema nella apertura file.");
System.exit(2); }
filtra (file);
System.exit(0);
}
public static void filtra(FileWriter file, String a1) {
InputStreamReader in = new InputStreamReader(System.in);
OutputStreamWriter out = new OutputStreamWriter(System.out);int x;
boolean statoMaiuscolo = false;try {
while ((x = in.read()) >= 0) {
// si deve leggere fino alla fine del filechar ch = (char) x;
if (ch == '\n') {out.flush();} // solo per la visualizzazioneif (! statoMaiuscolo) { out.write(ch); file.write (ch);}
if ((ch >= 'A') && (ch <= 'Z')) statoMaiuscolo = true;
else statoMaiuscolo = false;}
}
catch (IOException e) {System.out.println("Errore. Problema nella scrittura ");
System.exit(3);}
try { out.close(); file.close ();}
catch (IOException e) {
System.out.println("Errore. Problema in chiusura");
System.exit(4);}
}
}