D4rkAng3l
19-11-2008, 15:43
Per un primo esame di programmazione ad oggetti in Java la professoressa ha fatto in classe il seguente esercizio: scrivere una classe chiamata GestoreStringhe che contiene una serie di metodi utili per operare sulle stringhe, come: invertiStringa, verificaPalindromia, etcetc...
Io l'ho scritta commentandola e studiandomela...ma quando vado a compilarla il compilatore mi dà una serie di errori...in parte li ho risolti..ma questi che rimangono non riesco a risolverli...vi posto quà il codice della classe e l'elenco degli errori:
Classe GestoreStringhe:
/* La classe GestoreStringhe è un contenitore di metodi utili per operare sulle stringhe */
public class GestoreStringhe{
/* Metodo che prende due stringhe: nome e cognome; e che le unisce separandole con uno spazio e mettendo in maiuscolo
le due iniziali ed in minuscolotutto il resto.
Es: nome: "maRiO", cognome: "rOSsi" --> s = "Mario Rossi" */
public static String trasformaInUna(String nome, String cognome){
String s;
s = nome.substring(0,1).toUppercase();
s += nome.substring(1).toLowercase();
s += " ";
s += cognome.substring(0,1).toLowercase()+cognome.substring(1).toLowercase();
return s;
}
/* Metodo che permette di invertire la stringa che prende come parametro. Es: Se il metodo viene invocato con la stringa
S="Roma", esso restituirà il riferimento all'oggetto di tipo String il cui valore è "amoR" */
public static String invertiStringa(String s){
String t; // Stringa da restituire che conterrà l'inversa della stringa s
int i; // Variabile contatore
t = 0; // Inizializzazione: se s è vuota allora verrà restituita la stringa vuota
/* Ciclo che copia in t i caratteri di s a partire dall'ultimo fino al primo */
for(i=s.length()-1; i>=0; i--){ // Per i che parte dalla lunghezza di s meno 1 fino ad aver letto tutti i caratteri
t += s.substring(i,i+1); // Concatena a t l'i-esimo carattere di s
}
return t;
}
/* Metodo che permette di verificare se la stringa che prende come parametro è una stringa palindroma restituendo TRUE
se è vero, FALSE al contrario.
Es: S = "ama" --> restituisce TRUE, S = "ciao" --> restituisce FALSE */
public static boolean verificaPalindromia(String s){
String t; // Conterrà la stringa invertita
t = invertiStringa(s); // Inverte la stringa s e la mette in t
return s.equals(t); // Restituisce il risultato del test di uguaglianza tra s e t che può essere TRUE o FALSE
}
/* Metodo che permette di calcolare il prefisso comune delle due stringhe che prende come parametro */
public static String calcolaPrefissoComune(String s, String t){
int i, min;
boolean trovato; // Diventa TRUE quando si trova un carattere diverso fra s e t
String pref;
if(s.length() < t.length()) min = s.length();
else min = t.length();
trovato = false; // Inizializzazione della variabile trovato a false poichè non è ancora stato trovato un carattere diverso fra s e t
pref = ""; // Inizializzazione delle string pref con la stringa vuota, il prefisso comune è inizialmente nullo
i = 0; // Inizializzazione il contatore a 0
while((i<min) && (!trovato)){ // Finchè il contatore è minore del possibile prefisso e non è stato ancora trovato un carattere diverso fra s e t
if(s.substring(i,i+1).equals(t.substring(i,i+1))){ // Se l'i-esimo carattere delle 2 stringhe è uguale
pref += s.substring(i,i+1); // Concatena a pref l'i-esimo carattere comune alle 2 stringhe
i++; // Incrementa di uno il contatore per andare a testare il prossimo carattere
}
else trovato = true; // Altrimenti impostra trovato a true
}
return pref; // Restituisci il prefisso comune trovato
}
}
ERRORI:
C:\Programmi\Crimson Editor\template\esercizi\GestoreStringhe>javac TestGestoreStringhe.java
TestGestoreStringhe.java:11: cannot find symbol
symbol : method trasformaInUna(java.lang.String,java.lang.String)
location: class TestGestoreStringhe
String nomecognome = trasformaInUna(nome, cognome);
^
TestGestoreStringhe.java:13: cannot find symbol
symbol : method invertiStringa(java.lang.String)
location: class TestGestoreStringhe
String inversa = invertiStringa(a);
^
TestGestoreStringhe.java:15: cannot find symbol
symbol : method verificaPalindromia(java.lang.String)
location: class TestGestoreStringhe
boolean varbolleana1 = verificaPalindromia(a);
^
TestGestoreStringhe.java:17: cannot find symbol
symbol : method verificaPalindromia(java.lang.String)
location: class TestGestoreStringhe
boolean varbolleana2 = verificaPalindromia(c);
^
TestGestoreStringhe.java:19: cannot find symbol
symbol : method calcolaPrefissoComune(java.lang.String,java.lang.String)
location: class TestGestoreStringhe
String prefissocomune = calcolaPrefissoComune(a, b);
^
5 errors
C:\Programmi\Crimson Editor\template\esercizi\GestoreStringhe>
Poi ho realizzato anche una classe TestGestoreSTringhe che contiene il main e dove testo i metodi scritti nella classe GestoreStringhe...anche quà ho degli errori...quando provo a compilare questa classe il compilatore è come se non vedesse i metodi definiti nella classe GestoreStringhe:
class TestGestoreStringhe{
/* Il metodo main è necessariamente un metodo di classe */
public static void main(String[] args){
String a = "Ciao";
String b = "CiaoMondo";
String c = "AMA";
String nome = "maRiO";
String cognome = "roSSi";
String nomecognome = trasformaInUna(nome, cognome);
String inversa = invertiStringa(a);
boolean varbolleana1 = verificaPalindromia(a);
boolean varbolleana2 = verificaPalindromia(c);
String prefissocomune = calcolaPrefissoComune(a, b);
}
}
ERRORI:
C:\Programmi\Crimson Editor\template\esercizi\GestoreStringhe>javac TestGestoreStringhe.java
TestGestoreStringhe.java:11: cannot find symbol
symbol : method trasformaInUna(java.lang.String,java.lang.String)
location: class TestGestoreStringhe
String nomecognome = trasformaInUna(nome, cognome);
^
TestGestoreStringhe.java:13: cannot find symbol
symbol : method invertiStringa(java.lang.String)
location: class TestGestoreStringhe
String inversa = invertiStringa(a);
^
TestGestoreStringhe.java:15: cannot find symbol
symbol : method verificaPalindromia(java.lang.String)
location: class TestGestoreStringhe
boolean varbolleana1 = verificaPalindromia(a);
^
TestGestoreStringhe.java:17: cannot find symbol
symbol : method verificaPalindromia(java.lang.String)
location: class TestGestoreStringhe
boolean varbolleana2 = verificaPalindromia(c);
^
TestGestoreStringhe.java:19: cannot find symbol
symbol : method calcolaPrefissoComune(java.lang.String,java.lang.String)
location: class TestGestoreStringhe
String prefissocomune = calcolaPrefissoComune(a, b);
^
5 errors
C:\Programmi\Crimson Editor\template\esercizi\GestoreStringhe>
Da che può dipendere tutto ciò?Come posso risolvere?
Grazie
Andrea
Io l'ho scritta commentandola e studiandomela...ma quando vado a compilarla il compilatore mi dà una serie di errori...in parte li ho risolti..ma questi che rimangono non riesco a risolverli...vi posto quà il codice della classe e l'elenco degli errori:
Classe GestoreStringhe:
/* La classe GestoreStringhe è un contenitore di metodi utili per operare sulle stringhe */
public class GestoreStringhe{
/* Metodo che prende due stringhe: nome e cognome; e che le unisce separandole con uno spazio e mettendo in maiuscolo
le due iniziali ed in minuscolotutto il resto.
Es: nome: "maRiO", cognome: "rOSsi" --> s = "Mario Rossi" */
public static String trasformaInUna(String nome, String cognome){
String s;
s = nome.substring(0,1).toUppercase();
s += nome.substring(1).toLowercase();
s += " ";
s += cognome.substring(0,1).toLowercase()+cognome.substring(1).toLowercase();
return s;
}
/* Metodo che permette di invertire la stringa che prende come parametro. Es: Se il metodo viene invocato con la stringa
S="Roma", esso restituirà il riferimento all'oggetto di tipo String il cui valore è "amoR" */
public static String invertiStringa(String s){
String t; // Stringa da restituire che conterrà l'inversa della stringa s
int i; // Variabile contatore
t = 0; // Inizializzazione: se s è vuota allora verrà restituita la stringa vuota
/* Ciclo che copia in t i caratteri di s a partire dall'ultimo fino al primo */
for(i=s.length()-1; i>=0; i--){ // Per i che parte dalla lunghezza di s meno 1 fino ad aver letto tutti i caratteri
t += s.substring(i,i+1); // Concatena a t l'i-esimo carattere di s
}
return t;
}
/* Metodo che permette di verificare se la stringa che prende come parametro è una stringa palindroma restituendo TRUE
se è vero, FALSE al contrario.
Es: S = "ama" --> restituisce TRUE, S = "ciao" --> restituisce FALSE */
public static boolean verificaPalindromia(String s){
String t; // Conterrà la stringa invertita
t = invertiStringa(s); // Inverte la stringa s e la mette in t
return s.equals(t); // Restituisce il risultato del test di uguaglianza tra s e t che può essere TRUE o FALSE
}
/* Metodo che permette di calcolare il prefisso comune delle due stringhe che prende come parametro */
public static String calcolaPrefissoComune(String s, String t){
int i, min;
boolean trovato; // Diventa TRUE quando si trova un carattere diverso fra s e t
String pref;
if(s.length() < t.length()) min = s.length();
else min = t.length();
trovato = false; // Inizializzazione della variabile trovato a false poichè non è ancora stato trovato un carattere diverso fra s e t
pref = ""; // Inizializzazione delle string pref con la stringa vuota, il prefisso comune è inizialmente nullo
i = 0; // Inizializzazione il contatore a 0
while((i<min) && (!trovato)){ // Finchè il contatore è minore del possibile prefisso e non è stato ancora trovato un carattere diverso fra s e t
if(s.substring(i,i+1).equals(t.substring(i,i+1))){ // Se l'i-esimo carattere delle 2 stringhe è uguale
pref += s.substring(i,i+1); // Concatena a pref l'i-esimo carattere comune alle 2 stringhe
i++; // Incrementa di uno il contatore per andare a testare il prossimo carattere
}
else trovato = true; // Altrimenti impostra trovato a true
}
return pref; // Restituisci il prefisso comune trovato
}
}
ERRORI:
C:\Programmi\Crimson Editor\template\esercizi\GestoreStringhe>javac TestGestoreStringhe.java
TestGestoreStringhe.java:11: cannot find symbol
symbol : method trasformaInUna(java.lang.String,java.lang.String)
location: class TestGestoreStringhe
String nomecognome = trasformaInUna(nome, cognome);
^
TestGestoreStringhe.java:13: cannot find symbol
symbol : method invertiStringa(java.lang.String)
location: class TestGestoreStringhe
String inversa = invertiStringa(a);
^
TestGestoreStringhe.java:15: cannot find symbol
symbol : method verificaPalindromia(java.lang.String)
location: class TestGestoreStringhe
boolean varbolleana1 = verificaPalindromia(a);
^
TestGestoreStringhe.java:17: cannot find symbol
symbol : method verificaPalindromia(java.lang.String)
location: class TestGestoreStringhe
boolean varbolleana2 = verificaPalindromia(c);
^
TestGestoreStringhe.java:19: cannot find symbol
symbol : method calcolaPrefissoComune(java.lang.String,java.lang.String)
location: class TestGestoreStringhe
String prefissocomune = calcolaPrefissoComune(a, b);
^
5 errors
C:\Programmi\Crimson Editor\template\esercizi\GestoreStringhe>
Poi ho realizzato anche una classe TestGestoreSTringhe che contiene il main e dove testo i metodi scritti nella classe GestoreStringhe...anche quà ho degli errori...quando provo a compilare questa classe il compilatore è come se non vedesse i metodi definiti nella classe GestoreStringhe:
class TestGestoreStringhe{
/* Il metodo main è necessariamente un metodo di classe */
public static void main(String[] args){
String a = "Ciao";
String b = "CiaoMondo";
String c = "AMA";
String nome = "maRiO";
String cognome = "roSSi";
String nomecognome = trasformaInUna(nome, cognome);
String inversa = invertiStringa(a);
boolean varbolleana1 = verificaPalindromia(a);
boolean varbolleana2 = verificaPalindromia(c);
String prefissocomune = calcolaPrefissoComune(a, b);
}
}
ERRORI:
C:\Programmi\Crimson Editor\template\esercizi\GestoreStringhe>javac TestGestoreStringhe.java
TestGestoreStringhe.java:11: cannot find symbol
symbol : method trasformaInUna(java.lang.String,java.lang.String)
location: class TestGestoreStringhe
String nomecognome = trasformaInUna(nome, cognome);
^
TestGestoreStringhe.java:13: cannot find symbol
symbol : method invertiStringa(java.lang.String)
location: class TestGestoreStringhe
String inversa = invertiStringa(a);
^
TestGestoreStringhe.java:15: cannot find symbol
symbol : method verificaPalindromia(java.lang.String)
location: class TestGestoreStringhe
boolean varbolleana1 = verificaPalindromia(a);
^
TestGestoreStringhe.java:17: cannot find symbol
symbol : method verificaPalindromia(java.lang.String)
location: class TestGestoreStringhe
boolean varbolleana2 = verificaPalindromia(c);
^
TestGestoreStringhe.java:19: cannot find symbol
symbol : method calcolaPrefissoComune(java.lang.String,java.lang.String)
location: class TestGestoreStringhe
String prefissocomune = calcolaPrefissoComune(a, b);
^
5 errors
C:\Programmi\Crimson Editor\template\esercizi\GestoreStringhe>
Da che può dipendere tutto ciò?Come posso risolvere?
Grazie
Andrea