|
|||||||
|
|
|
![]() |
|
|
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 16: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: 00:27.




















