Newsgroup: it.comp.java
Titolo: Confronto Stringhe!!!

Salve,
avrei bisogno di un aiuto. Premetto che sono alle primissime esperienze con
java.
All'interno di un metodo "toString" ho bisogno di confrontare due età
dichiarate come String e non come int. Come devo fare?
Nella stessa classe ho anche un metodo getEtà.
es.:
public String toString(String età){
      if(this.getEtà..............)
          return..........;
}
Vi ringrazio per l'aiuto!
SALUTI!
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 writes:
P> Salve, avrei bisogno di un aiuto. Premetto che sono alle primissime
P> esperienze con java.
Legggere più manuali :) (smile di simpatia, non di scherzo)
P> bisogno di confrontare due età dichiarate come String e non come
P> int. Come devo fare?
Mai dato un occhio alla documnentazione della classe eh ?
String implementa  Comparable (interfaccia che peraltro  serve per gli
ordinamenti) e  quindi ti offre  un bel metodo compareTo  che codifica
coi valori -1, 0  e 1 il fatto che l'oggetto su  cui invochi il metodo
sia maggiore, uguale o minore dell'oggetto con cui lo compari.
http://java.sun.com/j2se/1.4.2/docs/api/
guarda la classe String e l'interfaccia Comparable.
-- 
 /\            ___
/___/\__|_|\_|__|___Gian Uberto Lauri_____________________
  //--\ | | \|  |   Integralista GNUslamico  
\/		    e allevatore di bug da competizione

 ho bisogno di confrontare due età dichiarate come String e non come int. Come devo fare?
.equals ti puo' aiutare!
Saluti
CarMas

> int. Come devo fare?
C> .equals ti puo' aiutare!
Ocio, che non te permette di dire che Toni xe più zovane de Bepi :) :)


 Ocio, che non te permette di dire che Toni xe piů zovane de Bepi :) :)
O_o
Non ho capito la tua affermazione, ma forse non ho interpretato bene la 
richiesta e non ho dato la risposta piu' corretta :D
Saluti
CarMas

> :)
C> O_o Non ho capito la tua affermazione, ma forse non ho interpretato
C> bene la richiesta e non ho dato la risposta piu' corretta :D
Scherzosamente  dicevo che  con equals  puoi solo  verificare  se sono
uguali, non sapere  quale è maggiore e quale è  minore :)... Visto che
si parlava di età... :)
Saluti!


 
comunque tu abbia stringhe puoi convertirle usando i metodi del wrapper 
del tipo primitivo (scusa la parolona) .... la cosa è semplice se hai 
due interi:
bool confronta;
try{
	confronta = (Integer.parseInt(ilTuoPrimoNumeroStringa) < 
Integer.parseInt(ilTuoSecondoNumeroStringa));
} catch (NumberFormatException ex) {
	ex.printStackTrace();
}
if (confronta) System.out.print("il primo è più piccolo del secondo");
poi se vuoi puoi usare Double, Byte, Long, etc...... :-) la piccola 
"complicazione" è che ti serve un try/catch altrimenti il compilatore se 
la prende :-)
buon divertimento

> 
k> comunque tu abbia stringhe puoi convertirle usando i metodi del
k> wrapper del tipo primitivo (scusa la parolona)
Vero, ma non so se ti conviene. E' vero che un test tra numeri è più
rapido che quello tra stringhe, ma la conversione non è
leggerissima...


 --
Sì, ma usando i wrapper ha in automatico anche un controllo di
validazione (che presumo gli serva se la stringa arriva da un client)

 dichiarate come String e non come int. Come devo fare?
la cosa migliore e' migliorare la struttura del codice e rendere le
eta'degli interi come dovrebbero essere.

 writes:
p> Sě, ma usando i wrapper ha in automatico anche un controllo di
p> validazione (che presumo gli serva se la stringa arriva da un
p> client)
La  validazione la  farei nei  getter e  nei setter...  Non  certo nel
toString() del post originale.



Questo non contrasta con quanto detto da me.
Siccome la deve fare e la farà con i wrapper avendo a questo punto gli
Integer può tranquillamente utilizzarli.

> 
p> Questo non contrasta con quanto detto da me.
p> Siccome la deve fare e la farà con i wrapper avendo a questo punto
p> gli Integer può tranquillamente utilizzarli.
Ovvio che  usi i wrapper per  la conversione, nessuno va  a rifarsi la
conversione a manina  visto che ci sono i  wrapper.  Ma ogni strumento
ha il suo uso, e ogni operazione il suo momento.
Usare  i wrapper  per  i  confronti in  un  metodo che  potenzialmente
potenzialmente viene chiamato N volte nel ciclo di vita dell'oggetto è
meno sano che usarlo una tantum in fase di creazione.
Nella fretta  avevo messo  anche i getter  come luogo.  Niet.   Se hai
frequente bisogno  della forma numerica del valore,  tanto vale tenere
il  valore memorizzato  come numero  oltre  che come  stringa -  salvo
cardinalità  dei dati  mostruose non  sono  i 4  byte di  un intero  a
mandarti un  comune computer in  out of memory  -. Se poi la  forma di
tipo String del valore la usi  poco e hai problemi di memoria, elimini
la forma  di tipo  string... Ma questi  sono tradeoff che  vanno visti
caso per caso...


 Nella stessa classe ho anche un metodo getEtà.
Not useful ;-)

>dichiarate come String e non come int. Come devo fare?
Ok, avevo inconsciamente letto due "date" anzichè due età.
Per due interi è ovviamente più semplice, la classe wrapper Integer ha
un metodo statico parseInt() oppure un constructor che accetta una stringa.
A te la scelta.

 
Bè no.. sono RuntimeException, quindi il compilatore te le passa se non 
le catturi..
Ovvio che nel problema in questione è poi d'obbligo catturarle..