Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi
Mate X7 rinnova la sfida nel segmento dei pieghevoli premium puntando su un design ancora più sottile e resistente, unito al ritorno dei processori proprietari della serie Kirin. L'assenza dei servizi Google e del 5G pesa ancora sull'esperienza utente, ma il comparto fotografico e la qualità costruttiva cercano di compensare queste mancanze strutturali con soluzioni ingegneristiche di altissimo livello
Nioh 3: souls-like punitivo e Action RPG
Nioh 3: souls-like punitivo e Action RPG
Nioh 3 aggiorna la formula Team NINJA con aree esplorabili più grandi, due stili di combattimento intercambiabili al volo (Samurai e Ninja) e un sistema di progressione pieno di attività, basi nemiche e sfide legate al Crogiolo. La recensione entra nel dettaglio su combattimento, build, progressione e requisiti PC
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti
La facilità di installazione e la completa automazione di tutte le fasi di utilizzo, rendono questo prodotto l'ideale per molti clienti. Ecco com'è andata la nostra prova in anteprima
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 19-11-2008, 16:43   #1
D4rkAng3l
Bannato
 
Iscritto dal: Mar 2004
Città: Roma
Messaggi: 2688
[Java] Problema nello scrivere una classe di metodi utili per le stringhe

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:
Codice:
/* 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:

Codice:
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
D4rkAng3l è offline   Rispondi citando il messaggio o parte di esso
Old 19-11-2008, 16:46   #2
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
basta che leggi il testo di ogni errore stampato: ti dice esattamente in che riga di quale file c'è l'errore, qual'è l'errore e il motivo del perchè c'è un errore.
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 19-11-2008, 17:00   #3
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
ho dato un'occhiata veloce.. non dovresti mettere
Codice:
GestoreStringhe.
davanti alla chiamata di ogni metodo?
esempio:

Codice:
String nomecognome = GestoreStringhe.trasformaInUna(nome, cognome);
visto che questi metodi fanno parte di una classe e sono statici..
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 19-11-2008, 17:34   #4
D4rkAng3l
Bannato
 
Iscritto dal: Mar 2004
Città: Roma
Messaggi: 2688
Quote:
Originariamente inviato da banryu79 Guarda i messaggi
basta che leggi il testo di ogni errore stampato: ti dice esattamente in che riga di quale file c'è l'errore, qual'è l'errore e il motivo del perchè c'è un errore.
eh ma questolosò...infatti gli altri errori che dava li avevo risolti guardando l'output che dava il compilatore...tranne che questi non riesco a capire da cosa dipendano e come risolverli...

Vedendo quello che dice il compilatore sembra che dipenda dai metodi toUpercase e toLoverCase ma non capisco perchè...come devo cambiare per risolverli?

TNX
D4rkAng3l è offline   Rispondi citando il messaggio o parte di esso
Old 19-11-2008, 18:07   #5
Don[ITA]
Senior Member
 
L'Avatar di Don[ITA]
 
Iscritto dal: Jul 2006
Città: Bergamo
Messaggi: 401
Quote:
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
Gli errori sono chiarissimi toUpperCase() e toLowerCase() non centrano nulla L'errore (in rosso) è semplicemente che non trova il simbolo (in blu) corrispondente alle tue chiamate nella tua classe TestGestoreStringhe.

Fai come suggerisce ndakota e mettici un bel GestoreStringhe. prima delle tue chiamate
__________________
iMac 27" 5K
Don[ITA] è offline   Rispondi citando il messaggio o parte di esso
Old 19-11-2008, 18:18   #6
D4rkAng3l
Bannato
 
Iscritto dal: Mar 2004
Città: Roma
Messaggi: 2688
Quote:
Originariamente inviato da Don[ITA] Guarda i messaggi
Gli errori sono chiarissimi toUpperCase() e toLowerCase() non centrano nulla L'errore (in rosso) è semplicemente che non trova il simbolo (in blu) corrispondente alle tue chiamate nella tua classe TestGestoreStringhe.

Fai come suggerisce ndakota e mettici un bel GestoreStringhe. prima delle tue chiamate
quello l'ho fatto nella classe TestGestoreStringhe che ora l'ha compilata tranquillamente.

Il problema lo dà quando provo a compilare la classe GestoreStringhe che contiene la serie di metodi per operare sulle stringhe e mi dà QUESTI errori:

C:\Programmi\Crimson Editor\template\esercizi\GestoreStringhe>javac GestoreStringhe.java
GestoreStringhe.java:11: cannot find symbol
symbol : method toUppercase()
location: class java.lang.String
s = nome.substring(0,1).toUppercase();
^
GestoreStringhe.java:12: cannot find symbol
symbol : method toLowercase()
location: class java.lang.String
s += nome.substring(1).toLowercase();
^
GestoreStringhe.java:14: cannot find symbol
symbol : method toLowercase()
location: class java.lang.String
s += cognome.substring(0,1).toLowercase()+cognome.substring(1).toLowercase();
^
GestoreStringhe.java:14: cannot find symbol
symbol : method toLowercase()
location: class java.lang.String
s += cognome.substring(0,1).toLowercase()+cognome.substring(1).toLowercase();
^
GestoreStringhe.java:26: incompatible types
found : int
required: java.lang.String
t = 0; // Inizializzazione: se s Þ vuota allora verrÓ restituita la strin

^
5 errors
dove i simboli sbagliati sono toUppercase e toLowercase
D4rkAng3l è offline   Rispondi citando il messaggio o parte di esso
Old 19-11-2008, 20:02   #7
Oceans11
Senior Member
 
L'Avatar di Oceans11
 
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
Quote:
Originariamente inviato da D4rkAng3l Guarda i messaggi
quello l'ho fatto nella classe TestGestoreStringhe che ora l'ha compilata tranquillamente.

Il problema lo dà quando provo a compilare la classe GestoreStringhe che contiene la serie di metodi per operare sulle stringhe e mi dà QUESTI errori:

C:\Programmi\Crimson Editor\template\esercizi\GestoreStringhe>javac GestoreStringhe.java
GestoreStringhe.java:11: cannot find symbol
symbol : method toUppercase()
location: class java.lang.String
s = nome.substring(0,1).toUppercase();
^
GestoreStringhe.java:12: cannot find symbol
symbol : method toLowercase()
location: class java.lang.String
s += nome.substring(1).toLowercase();
^
GestoreStringhe.java:14: cannot find symbol
symbol : method toLowercase()
location: class java.lang.String
s += cognome.substring(0,1).toLowercase()+cognome.substring(1).toLowercase();
^
GestoreStringhe.java:14: cannot find symbol
symbol : method toLowercase()
location: class java.lang.String
s += cognome.substring(0,1).toLowercase()+cognome.substring(1).toLowercase();
^
GestoreStringhe.java:26: incompatible types
found : int
required: java.lang.String
t = 0; // Inizializzazione: se s Þ vuota allora verrÓ restituita la strin

^
5 errors
dove i simboli sbagliati sono toUppercase e toLowercase
I metodi sono toUpperCase() e toLowerCase(), attento alle maiuscole!
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes]
"Pirating software? Choose Microsoft!"
Oceans11 è offline   Rispondi citando il messaggio o parte di esso
Old 19-11-2008, 20:52   #8
D4rkAng3l
Bannato
 
Iscritto dal: Mar 2004
Città: Roma
Messaggi: 2688
Quote:
Originariamente inviato da Oceans11 Guarda i messaggi
I metodi sono toUpperCase() e toLowerCase(), attento alle maiuscole!
ah ok...ti ringrazio...ho appena iniziato con Java...paura...
D4rkAng3l è offline   Rispondi citando il messaggio o parte di esso
Old 19-11-2008, 20:56   #9
D4rkAng3l
Bannato
 
Iscritto dal: Mar 2004
Città: Roma
Messaggi: 2688
doh ora compila ma quando vado ad eseguire la mia applicazione mi dà un errore a run time...nel promp di MsDos mi dice:

C:\Programmi\Crimson Editor\template\esercizi\GestoreStringhe>java GestoreStringhe
Exception in thread "main" java.lang.NoSuchMethodError: main

C:\Programmi\Crimson Editor\template\esercizi\GestoreStringhe>

Come mai? che significa?

Grazie
Andrea
D4rkAng3l è offline   Rispondi citando il messaggio o parte di esso
Old 19-11-2008, 21:27   #10
magix2003
Senior Member
 
L'Avatar di magix2003
 
Iscritto dal: Aug 2005
Città: Wien
Messaggi: 435
Significa che manca il metodo con signature public static void main(String[] args). Questo metodo è lo starting point per ogni applicazione stand alone (come il main in C/C++). Devi crearne uno per poter fare funzionare un programma...
__________________
"Sono 126 miglia per Chicago. Abbiamo il serbatoio pieno, mezzo pacchetto di sigarette, è buio, e portiamo tutt'e due gli occhiali da sole"

magix2003 è offline   Rispondi citando il messaggio o parte di esso
Old 19-11-2008, 21:30   #11
D4rkAng3l
Bannato
 
Iscritto dal: Mar 2004
Città: Roma
Messaggi: 2688
Quote:
Originariamente inviato da magix2003 Guarda i messaggi
Significa che manca il metodo con signature public static void main(String[] args). Questo metodo è lo starting point per ogni applicazione stand alone (come il main in C/C++). Devi crearne uno per poter fare funzionare un programma...
no vabbè...c'è che sono rincojonito !!! ho lanciato l'altra classe...infatti funziona
D4rkAng3l è offline   Rispondi citando il messaggio o parte di esso
Old 19-11-2008, 23:21   #12
Don[ITA]
Senior Member
 
L'Avatar di Don[ITA]
 
Iscritto dal: Jul 2006
Città: Bergamo
Messaggi: 401
Eheh capita
Io comunque ti condiglio di usare un ide come netBeans o eclipse per scrivere in java. Più semplice veloce e ti risparmi un sacco di tempo a trovare gli errori sintattici

Ciauz
__________________
iMac 27" 5K
Don[ITA] è offline   Rispondi citando il messaggio o parte di esso
Old 19-11-2008, 23:42   #13
D4rkAng3l
Bannato
 
Iscritto dal: Mar 2004
Città: Roma
Messaggi: 2688
Quote:
Originariamente inviato da Don[ITA] Guarda i messaggi
Eheh capita
Io comunque ti condiglio di usare un ide come netBeans o eclipse per scrivere in java. Più semplice veloce e ti risparmi un sacco di tempo a trovare gli errori sintattici

Ciauz
la proff ce lo ha esplicitamente vietato per questo primo esame...poi per quello del semestre prossimo dovrebbe essere lecito
D4rkAng3l è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi Recensione HUAWEI Mate X7: un foldable ottimo, m...
Nioh 3: souls-like punitivo e Action RPG Nioh 3: souls-like punitivo e Action RPG
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti Test in super anteprima di Navimow i220 LiDAR: i...
Dark Perk Ergo e Sym provati tra wireless, software via browser e peso ridotto Dark Perk Ergo e Sym provati tra wireless, softw...
DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker DJI RS 5: stabilizzazione e tracking intelligent...
Nioh 3 debutta alla grande su Steam: pri...
Al centro della Via Lattea ci potrebbe e...
Elon Musk ora guarda alla Luna: SpaceX p...
La Cina ha lanciato nuovamente lo spazio...
Blue Origin potrebbe realizzare il lande...
Artemis II: il prossimo Wet Dress Rehear...
Il nuovo HONOR 600 sta arrivando e avr&a...
La crisi delle memorie non coinvolger&ag...
Windows domina su Steam, ma molti utenti...
Per non incorrere in nuovi aumenti delle...
Cubi Z AI 8M visto da vicino, un mini-PC...
Datacenter nello Spazio, affascinante ma...
Social e minori, Butti apre al dibattito...
Tutte le offerte Amazon del weekend, sol...
Amazon spinge sull'usato garantito: 10% ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 08:36.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v