View Full Version : [java] problema di inizializzazione
Ciao ragazzi non capisco perchè il compilatore mi dice che non ho inizializzato la variabile A quando nell if faccio A = new Torre(...);
Torre A ;
while(scanner.hasNextLine()){
.......
if (stringa[0].equals("C")){
A = new Torre(stringa[1]);
.........}
if (stringa[0].equals("+") && torreOn){
...............{
A.addBlocco(new Jolly(Integer.parseInt(stringa[1])));
..........
}else{if (A.addBlocco(new Regolare(Integer.parseInt(stringa[1]),stringa[2])))
.....}
}
ps. l'errore che mi da è il seguente
javac Esercizio1.java
Esercizio1.java:21: error: variable A might not have been initialized
A.addBlocco(new Jolly(Integer.parseInt(stringa[1])));
^
Esercizio1.java:23: error: variable A might not have been initialized
}else{if (A.addBlocco(new Regolare(Integer.parseInt(stringa[1]),stringa[
2])))
^
Esercizio1.java:31: error: variable A might not have been initialized
System.out.println("TORRE " +A.getNome());
^
vittorio130881
03-02-2015, 16:35
puoi mettere la definizione di classe Torre?
magari nel costruttore.....cè il problema
public class Torre{
.....
public Torre(String n){
nomeTorre=n;
}
public Torre(String n, Blocco c){
this(n); blocco=c;
}
//metodi
......
questi sono i due costruttori...
Se ho fatto qualche cavolata mi scuso ma non sono molto esperto
vittorio130881
03-02-2015, 16:47
aimè non sono esperto nemmeno troppo io :)
non è che se stringa[0].equals("C"))
stringa[1] è missing?
vittorio130881
03-02-2015, 16:50
perdonami :)
null
No non è null...
Gli passo un file da cmd con la riedizione(java es1<prova.txt) e e mi riempe l array..
wingman87
03-02-2015, 16:58
Il compilatore ti dice che la variabile "potrebbe" non essere inizializzata, questo perché l'inizializzazione avviene in un ramo che potrebbe non essere eseguito (per quanto il compilatore è in grado di supporre).
Se sei sicuro che poi in esecuzione la variabile verrà sempre inizializzata puoi risolvere semplicemente inizializzando a null la variabile A quando la dichiari:
Torre A = null;
vittorio130881
03-02-2015, 16:58
ok mi è chiaro forse......
Local variable should be assigned in all possible flows, otherwise it is compiletime error.
prova a dare un valore di default ad A insomma inizializzala in ogni caso.....
vittorio130881
03-02-2015, 16:59
nooooooo wingman mi hai fregato sul tempo
uff uff ci ero arrivato :)
Ssisi sono sicuro che viene eseguito...
ho provato e va.. grazie a entrambi...:D :D :D :D :D ;) :doh:
wingman87
03-02-2015, 17:01
eheh :D
Oceans11
04-02-2015, 00:03
Ssisi sono sicuro che viene eseguito...
ho provato e va.. grazie a entrambi...:D :D :D :D :D ;) :doh:
se sei sicuro che viene eseguito perchè fai l'if?
Metto l'if perchè è dentro a un while e non voglio che venga eseguito ogni volta...
Se non viene eseguito quel pezzo li neanche altre parti del codice vengono eseguite che riguardano la variabile A.. però sono sicuro che almeno una volta nell esecuzione la variabile A viene usata altrimenti il programma non avrebbe senso...
Se hai altri solouzioni più pratiche illuminami :D :D che io non sono espertissimo.. :cincin:
Oceans11
05-02-2015, 09:36
Metto l'if perchè è dentro a un while e non voglio che venga eseguito ogni volta...
Se non viene eseguito quel pezzo li neanche altre parti del codice vengono eseguite che riguardano la variabile A.. però sono sicuro che almeno una volta nell esecuzione la variabile A viene usata altrimenti il programma non avrebbe senso...
Se hai altri solouzioni più pratiche illuminami :D :D che io non sono espertissimo.. :cincin:
Torre a = null;
while (...) {
if (a == null) {
a = new Torre();
}
}
anche se non ho ben chiaro cosa fai con l'input...
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.