|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Junior Member
Iscritto dal: Oct 2010
Messaggi: 3
|
[Java] istruzione If sembra non funzionare
salve a tutti,
ho un problemino con l' istruzione if di java.. nella visualizzazione dei dati volevo far apparire nel campo relativo la scritta "Si" o "NO" invece di" true" o "false" , in base al valore letto da un metodo che ritorna un valore di tipo boolean.. riporto qui un pezzo del codice: //creazione JLabel// if( miacamera[f].GetBagno()==true) {JLabel etichetta6=new JLabel("SI");} else {JLabel etichetta6=new JLabel("NO");} ...... Mframe.getContentPane().add(etichetta5); Mframe.getContentPane().add(etichetta6); ........ Ecco all riga :Mframe.getContentPane().add(etichetta6) mi riporta l errore : etichetta6 cannot be resolved da notare che le altre JLabel vengono correttamente create e visualizzate nella finestra, però sembra che non gli piaccia l istruzione IF ( che peraltro non riporta errori di sintassi ecc.) grazie mille! |
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Jan 2005
Città: Siena
Messaggi: 1313
|
Quote:
Codice:
JLabel etichetta6=null; if( miacamera[f].GetBagno()==true) {etichetta6=new JLabel("SI");} else {etichetta6=new JLabel("NO");} Codice:
Mframe.getContentPane().add(etichetta6); Ti consiglio di fare una ricerca sullo scope delle varibili, o scoping |
|
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
Quote:
![]() ![]() |
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Jan 2005
Città: Siena
Messaggi: 1313
|
|
![]() |
![]() |
![]() |
#5 | |
Junior Member
Iscritto dal: Oct 2010
Messaggi: 3
|
Quote:
ok ti ringrazio molto.. ho provato e cosi funziona! non riesco solo a capire come mai non accetti la sintassi completa(errore riportato-> duplicate local variable) : ... JLabel etichetta6=null; if( miacamera[f].GetBagno()==true) {JLabel etichetta6=new JLabel("SI");} else {JLabel etichetta6=new JLabel("NO");} .... ma solo quella abbreviata come da te suggerito nell ' if : if( miacamera[f].GetBagno()==true) {etichetta6=new JLabel("SI");} else {etichetta6=new JLabel("NO");} |
|
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Jan 2005
Città: Siena
Messaggi: 1313
|
non ho abbreviato niente, ho permesso alla variabile di avere una "vita più lunga"
![]() cmq cerco di fartti capire con un po' di pseudocodice e commenti. Innanzitutto sappi che una variabile esiste nello scope in cui è stata creata e in tutti gli scope "figli" (nell'esempio quelli 2 e 3) ESEMPIO 1 Codice:
public void Metodo(){ //scope 1 JLabel label=null; //dichiarata una variabile che essendo stata creata nello scope 1 durerà fino alla fine di tale scope; if(qualcosa){ //scope 2 label = new JLabel("SI"); } //fine scope 2 else{//scope 3 label = new JLabel("NO"); }//fine scope 3 panel.add(label); //siamo in scope 1, quindi la variabile label esiste ancora) } //Fine scope 1 (da qui in poi non esiste più label) ESEMPIO 2 Codice:
public void Metodo(){ //scope 1 if(qualcosa){ //scope 2 JLabel label = new JLabel("SI"); //la variabile label nasce in scope 2 e muore alla fine di scope 2 } //fine scope 2 else{//scope 3 JLabel label = new JLabel("NO"); //la variabile label nasce in scope 3 e muore alla fine di scope 3 (e tra l'altro non ha niente a che fare con la precedente) }//fine scope 3 panel.add(label); //siamo fuori da scope 2 o 3 e non esiste nessuna variabile label definita nello scope corrente) } //Fine scope 1 Ultima modifica di astorcas : 11-10-2010 alle 15:50. |
![]() |
![]() |
![]() |
#7 | |
Junior Member
Iscritto dal: Oct 2010
Messaggi: 3
|
Quote:
CHiaro.. il concetto di scope mi è ora + chiaro ..grazie era solo la sintassi nel if dell istruzione : {etichetta6=new JLabel("SI");} invece di {JLabel etichetta6=new JLabel("SI");} ma forse ho capito... la variabile viene dichiarata fuori dell if con : JLabel etichetta6=null; e viene poi istanziata all interno dell if, senza JLabel davanti a etichetta6. porta pazienza sono un po alle prime armi... ![]() |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 05:25.