Newsgroup: it.comp.java
Titolo: Problemi con stringhe vuote tornate da JTextField

Salve a tutti vorrei chiedervi qualcosa su JTextField e stringhe. In
pratica ho questo problemino io dovrei prendere dal JTextField la
stringa inserire (e lo faccio con il metodo getText()) ora la stringa
presa la vorrei convertire in intero.
Se il JTextField è vuoto ovviamente non posso convertire nulla appunto
per questo ho inserito questo controllo:
        if(parametri[10]!=null && parametri[10]!="" && parametri[10]!="
")
            ordine.setQuantitaMerce(Integer.parseInt(parametri[10]));
dove parametri è un array di stringe, in pratica quello che non
capisco è cosa ritorna il getText di JTextField quando il campo è
vuoto?
C'è un metodo che verifica se una stringa di testo può essere
convertita in intero?
Grazie a tutti.
Ciao ciao.

 ha scritto nel messaggio 
news:1123580344....@g43g2000cwa.googlegroups.com...


Per quanto riguarda l'eccezione lanciata da Integer.parseInt ci avevo
pensato infatti sono riuscito a risolvere.
Per quanto riguarda il getText del JTextField però non sono riuscito a
risolvere infatti non viene ritornato null.
        parametri[0] = tnomec.getText();
        System.out.println(parametri[0]);
        System.out.println(parametri[0]==null);
        System.out.println(tnomec.getText()==null);
tnomec è un oggetto JTextField.
Le due condizioni inserite nel println ritornano come valore false e
non null e anche se metto al posto di null "" mi viene ritornato sempre
false.
A me servirebbe qualcosa che mi indichi quando il campo del JTextField
e vuoto e non solo per conversione in Int per quello ho risolto, ma mi
serve per altri motivi.
Come posso risolvere?
Grazie.

Prova a confrontare la stringa ritornata da getText con la stringa vuota "", 
usando il metodo equals di String:
System.out.println(tnomec.getText().equals("")); 

 System.out.println(tnomec.getText().equals(""));
Con equals() funziona, come mai con == non va e con equals si?
Effettivamente ricordavo che con == non funzionava nulla però
provandolo ultimamente ho visto che funziona quindi ho usato solo
quello.
Grazie, ciao ciao.

In effetti l'argomento è un po' delicato.
Se abbiamo due oggetti e vogliamo testarne l'uguaglianza l'operatore = = 
serve a ben poco. Infatti ritorna true solo se il riferimento ai 2 oggetti è 
lo stesso (in pratica se si usano 2 variabili per riferirsi allo stesso 
oggetto). = = va bene per i tipi di dato primitivi (int, float,ecc), ma non 
per gli oggetti.
Per questo è stato introdotto il metodo equals(Object o). Questo è un metodo 
che tutte le classi ereditano dalla superclasse Object e può essere 
sovrascritto. Se non viene sovrascritto funziona esattamente come = =. Serve 
essenzialmente per dare una propria definizione di uguaglianza tra 2 oggetti 
di una classe.
Ad esempio data la classe A:
class A {
int x;
int y;
/*
Possiamo dare noi una definizione di uguaglianza tra oggetti di questa 
classe come ci pare, sovrascrivendo il metodo equals. In questo caso è 
logico aspettarsi che 2 oggetti uguali di questa classe abbiano i 2 campi 
uguali.
*/
public boolean equals(A var)
{
return (x==var.x && y==var.y)
}
Se adesso proviamo a istanziare 2 oggetti a,b
public static void main(String[] args)
{
A a = new A();
a.x = 1;
a.y = 2;
A b = new A();
b.x = 1;
b.y = 2;
a == b ;          // ritornerà false (perchè sono 2 oggetti distinti, 
nonostante abbiano campi uguali)
a.equals(b);    //ritornerà invece true
}
}
Le proprietà richieste da equals sono
la riflessività: x.equals(x) deve essere true
la simmetria: y.equals(x) ritorna true solo se x.equals(y) ritorna true
la transitività: se x.equals(y) è true e y.equals(z) è true allora 
x.equals(z) = true
Per ogni referenza nulla: es: x.equals(null) deve ritornare false.
Nel caso di String il metodo equals è già bello e implementato e quindi lo 
si può usare tranquillamente per testare l'uguaglianza di due stringhe.
Spero di essermi spiegato :) ciao