edutecnica

Esercizio 6        

Scrivere una classe Java che chiede (tramite lo standard input) ripetutamente all'utente di inserire stringhe e che termina quando l'utente inserisce la stringa vuota. Al termine dell'inserimento delle stringhe, la classe deve stampare sullo standard output la lunghezza media delle stringhe inserite.



import java.util.Scanner;
class frase {
public static void main (String args []){
Scanner in=new Scanner(System.in);
String[] T = new String[10];

int lunghezza_stringhe = 0, lunghezza_sequenza=0;
double lunghezza_media;

for(int i=0;i<T.length;i++){
  
T[i]=in.nextLine();
      if(T[i].isEmpty()){
         T[i]=null;
         break;
      }//fine if
lunghezza_stringhe += T[i].length();
}//fine for
in.close();

for(String s:T)
if(s!=null)lunghezza_sequenza++;

lunghezza_media = (double)lunghezza_stringhe/lunghezza_sequenza;
System.out.println("la lunghezza media:"+ lunghezza_media);
System.out.println("la lunghezza sequenza:"+ lunghezza_sequenza);
}//fine main
}// fine classe

Per come è stato strutturato, il programma interrompe lo stream di input quando viene inserita una stringa vuota (si batte il tasto <invio>).L'istruzione:
if(T[i].isEmpty()){T[i]=null;break;}
reimposta a null l'attuale elemento stringa del vettore T che è costituito da una stringa vuote. L'istruzione break successiva determina l'uscita forzosa dal ciclo di inserimento delle stringhe. Questo accorgimento ci permette di semplificare il costrutto per il calcolo degli elementi della sequenza, eseguito dal ciclo for each:
che deve solo controllare che l'elemento sia impostato al valore null. Altrimenti avremo dovuto applicare l'istruzione:
if(s!=null || s.equals("")) lunghezza_sequenza++;
Mentre l'istruzione if(T[i].isEmpty())può essere usata in alternativa all'istruzione if(T[i].equals("")).
A dimostrazione del fatto che non esiste un unico modo per risolvere un problema.