edutecnica

Esercizio 7        

Un oggetto della classe InsiemeDiStringhe consente di rappresentare un qualunque insieme finito di stringhe. La classe InsiemeDiStringhe ha il seguente scheletro:
1]class InsiemeDiStringhe {..} variabile che rappresenta l'insieme di stringhe considerato dall'oggetto.
2] InsiemeDiStringhe(..) costruttore che permette di creare un oggetto che rappresenta l'insieme di stringhe contenute in un array T.
3] public String stringaLunga() restituisce la stringa di lunghezza massima, se vi sono più stringhe di lunghezza max ne restituisce una arbitrariamente.
4] public String spaziStringa() restituisce la stringa contenente più spazi
5] public String preStringa() visualizza tutte le stringhe che hanno il prefisso specificato .


L'unica difficoltà è forse data dal fatto che il vettore di stringhe è contenuto all'interno della classe InsiemeDiStringhe.
InsiemeDiStringhe ins = new InsiemeDiStringhe(num);
La dimensione del vettore non è nota a priori e il costruttore deve inizializzare il vettore T
private int i,n=0;
private String[ ] T;
InsiemeDiStringhe(int max) {//costruttore
   this.T = new String[max];
   this.n = max;
   for(i=0;i < T.length;i++)T[i]="";
   System.out.println( T.length );
}//fine costruttore

che come si nota è un attributo privato della classe suddetta.

import java.util.Scanner;
class provaCoda{
public static void main (String args []){
Scanner in=new Scanner(System.in);
int num;
System.out.print("quante stringhe:");
num=in.nextInt();
in.close();
InsiemeDiStringhe ins = new InsiemeDiStringhe(num);
ins.setInsieme();
ins.getInsieme();
System.out.print("\nstringa più lunga:"+ins.stringaLunga());
System.out.print("\nstringa con più spazi:"+ins.spaziStringa());
System.out.print("\ncon prefisso:");
ins.preStringa("0331");
}//fine main
}// fine classe provaInsieme
//--------------------------classe InsiemeDiStringhe
class InsiemeDiStringhe {
private int i;
private int n=0;
private String[] T;
InsiemeDiStringhe(int max) {//costruttore
  this.T = new String[max];
  this.n = max;
  for(i=0;i &lt; T.length;i++)T[i]="";
  System.out.println(T.length);
}//fine costruttore
public int getN(){return n;}
public void getInsieme(){
  for(i=0;i < T.length;i++)
    System.out.println(T[i]);
}//fine getInsieme
public void setInsieme(){
Scanner in=new Scanner(System.in);
for(i=0;i < T.length;i++) {
  System.out.print("ins:");
  T[i]=in.nextLine();
}//fine for
in.close();
}//fine setInsieme
public String stringaLunga(){
String lunga="";
int lgmax=0,i;
for(i=0;i &lt; T.length;i++)
  if(T[i].length()>lgmax){
    lunga=T[i];
    lgmax=T[i].length();
  }//fine if
return lunga;
}//fine getInsieme
public String spaziStringa(){
String lex="nessuna stringa con spazi";
int i,j,spazi,spazimax=0;
System.out.println();
for(i=0;i < T.length;i++) {
spazi=0;
for(j=0;j < T[i].length();j++)
  if(T[i].charAt(j)==' ')spazi++;
if(spazi > spazimax){
  spazimax=spazi;
  lex=T[i];
}//fine if
}//fine for i
return lex;
}//fine spaziStringa
public void preStringa(String pre){
int lg=0,i; String s="";
lg=pre.length();
for(i=0;i < T.length;i++)
  if(T[i].length()&gt;=lg){
    s=T[i].substring(0, lg);
    if(s.compareTo(pre)==0)
    System.out.println(T[i]);
  }//fine if
}//fine preStringa
}//fine classe InsiemeDiStringhe