21 luglio 2007
Programma “Parola.java” {1}
//programma in java fatto da me che dice quale è la parola più lunga in un file di testo…utile se si vuole imparare qualcosa sulla gestione delle stringhe
import java.io.FileReader;
import java.io.PrintWriter;
import java.util.Scanner;
import java.io.IOException;
import java.io.FileNotFoundException;
import java.util.StringTokenizer;
/**
Classe che trova in un testo la parola di lunghezza più lunga e ne
visualizza la lunghezza.
*/
public class Parola
{
public static void main( String args[]) throws IOException
{
// Acquisizione del nome file di testo tramite la classe Scanner
Scanner in= new Scanner(System.in);
System.out.println(“Introdurre il nome del file di testo di cui”
+” trovare la parola \npiu’ lunga comprensivo di estensione:\n”);
String line=in.nextLine();
try
{
// Acquisizione del file tramite la classe FileReader
// e la classe Scanner. Possibile FileNotFoundException.
FileReader input=new FileReader(line);
Scanner file1= new Scanner(input);
String[] max=new String[1];
max[0]=”";
int n=0;
int i=0;
while(file1.hasNextLine())
{
// Elaborazioni sulle stringhe di testo e confronto
// tra le loro lunghezze.Utilizzo classe StringTokenizer.
String riga=file1.nextLine();
StringTokenizer a=new StringTokenizer(riga);
while(a.hasMoreTokens())
{
String b=a.nextToken();
if(max[i].length()<=b.length()&&isWord(b))
{
i++;
if(i==max.length)
max=raddoppio(max);
max[i]=b;
}//fine if
n++;
}
}//fine while e operzioni sul file
input.close(); // chiusura file di lettura
//stampa della parola o delle parole con le relative lunghezze
System.out.println(“\n”+line+” contiene “+n+” parole.\n”);
int f=0;
int d=1;
for(int a=0;a<=i;a++)
{
if(max[a].length()==max[i].length())
f++;
}
if(f>1)
{
System.out.println(“Le parole piu’ lunghe sono:\n”);
for(int b=0;b<=i;b++)
{
if(max[b].length()==max[i].length())
{
System.out.println(d+”. “+max[b]);
d++;
}//fine if
}//fine for
System.out.println(“\ne contengono tutte “+
max[i].length()+” lettere\n”);
}//fine if
else
System.out.println(“La parola piu’ lunga e’:\n\n”+
max[i]+”\n\ne contiene “+max[i].length()+” lettere\n”);
} //fine try
catch(FileNotFoundException e)
{
// Cattura dell’eccezione FileNotFoundException
System.err.println(“File: “+line+” non trovato\n”);
System.exit(1); // uscita dal programma
}
} //fine main
/**
Metodo statico che verifica se è un parola è composta
da sole lettere.
*/
public static boolean isWord(String a)
{
String word=a;
for(int i=0;i<word.length();i++)
{
char lettera=word.charAt(i);
if(!Character.isLetter(lettera))
return false;
} //fine for
return true;
} //fine metodo
/**
Metodo statico che radoppia le dimensioni di un array
*/
public static String[] raddoppio(String[] a)
{
String[] b=a;
String[] c = new String[2 * b.length];
for (int i = 0; i < b.length; i++)
c[i] = b[i];
//fine for
return c;
}//fine metodo
} //fine classe
Un Commento
Lascia un Commento
21 lug 2007 @ 16:25:10
Il programma in Java non so a chi potrebbe servire ma va bene come prova del mio blog.