Esercizio 1
Scrivi un programma che che legga dei numeri inseriti in un file di testo.
Se nel file di testo non vi è niente, il programma deve avvisare che il file è vuoto, se vi è un solo numero, questo numero deve essere stampato, se vi sono due numeri (disposti su due righe differenti) deve essere stampato il loro prodotto, se vi sono più di due numeri (disposti righe differenti) deve essere stampata la loro somma.
Non conoscendo a priori quanti numeri interi sono contenuti nel file 'numeri.txt'
conviene fare uso di un arraylist. L'operatore A.size()
ci dice quanti numeri ci sono (quante righe sono occupate). A secondo del
suo valore la struttura decisionale if-else if esegue le operazioni indicate
dalle specifiche del problema. Ogni singolo numero memorizzato nell'arraylist
deve prima essere convertito in stringa e poi in numero, tramite l'istruzione:
Questa operazione non è indispensabile nel caso il file sia vuoto oppure contenga un solo numero. La variabile 'tot' funziona da accumulatore e restituisce il prodotto dei due numeri incontrati oppure la somma dei più numeri trovati.
import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
class nomi{
public static void main (String args [])throws IOException{
BufferedReader f=null;
int i=0,tot=0;
String s="";
ArrayList A=new ArrayList(0);
try {
f=new BufferedReader(new FileReader("numeri.txt"));
while(s!=null){
s=f.readLine();
if(s!=null){
A.add(s);
i++;
}//fine if
}//fine while
f.close();
}catch (IOException e){
System.err.println("errore"); }//fine try-catch
if(A.size()==0)System.out.println("file vuoto");
else if(A.size()==1) System.out.println(A.get(0));
else if(A.size()==2){
tot=Integer.parseInt(((String)A.get(0)).trim()); tot*=Integer.parseInt(((String)A.get(1)).trim());
System.out.println(tot);
} else { for(i=0;i < A.size();i++)
tot+=Integer.parseInt(((String)A.get(i)).trim());
System.out.println(tot);
}// fine else
}//fine main
}//fine class