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.
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 < 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 < 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()>=lg){
s=T[i].substring(0, lg);
if(s.compareTo(pre)==0)
System.out.println(T[i]);
}//fine if
}//fine preStringa
}//fine classe InsiemeDiStringhe