Newsgroup: it.comp.java
Titolo: null pointer exception : aiuto!!!

public class pippo {
	public pippo(){
	int[][] salve ;
	salve = new int[][] {{1,2,3,4},
			     {2,3,4,5},
			     {3,4,5,6}};
	}
	public void run(){
		if(salve[1][2] == num).....
	}
	......}
questo è una parte di codice del 
programma.in
 compilazione nessun 
problema ma quando lo vado ad avviare mi viene dato un errore 
nullPointerExcepetion alla riga dell'if all'interno del metodo run
del thread.premetto che nel medoto main ho già provveduto ad istanziare 
un oggetto di tipo pippo e quindi il costruttore mi è partito.
ma il problema è che ora alla riga dell'if mi viene dato errore in 
esecuzione di tipo nullPointerException.non riesco proprio a capire il 
problema!! 				

Finche la definizione è all'interno del costruttore, solo il costruttore 
può vedere l'array...
Sposta l'array (e non l'inizializzazione) fuori sulla classe e tutto 
funzionerà
Ciao

Gian Luca Dalla Torre ha scritto:

scusami avevo sbagliato a scrivere. ti riscrivo l'inizio
public class pippo {
	int[][] salve ;
	public pippo (){
	.........
in questo modo mi da il prob.

Prova a dare delle dimensioni all'array.

 
stesso identico problema!

 stesso identico problema!
Ma...  num esiste ?

fabrydiscute ha scritto:

esiste tutto,altrimenti mi avrebbe dato errore di compilazione e non in 
esecuzione.



Non e' che hai ridefinito salve anche nel costruttore?
Cerco di spiegarmi meglio. A prima vista e' un errore classico: hai una
dichiarazione di un attributo che viene inizializzato nel costruttore.
Solo che nel costruttore, invece di limitarti ad inizializzare l'attributo
salve, definisci una variabile locale con lo stesso nome, che "nasconde"
quindi l'attributo, e l'inizializione e' quindi applicata a tale variabile
e non all'attributo.
-- 
Lucio Benfante
Java User Group Padova: 
http://www.jugpadova.it
Brainbench MVP for Java 1: 
http://www.brainbench.com
MyTranscript: 
http://www.brainbench.com/transcript.jsp?pid=167064

 in questo modo mi da il prob.
Prova ad isolare meglio il problema, il codice non ha nulla che non
va, infatti l'esempio sotto compila e funziona
public class TestArray {
        private int[][] salve;
        public TestArray() {
                salve = new int[][] {
                        {1,2,3,4,5},
                        {1,2,3,4,5},
                        {1,2,3,4,5}};
        }
        public boolean test(int num) {
                return salve[1][2] == num;
        }
        public static void main(String[] args) {
                TestArray o = new TestArray();
                assert o != null;
                assert o.test(3);
                assert !o.test(4);
        }
}
Cerca di scrivere una classe il piu' piccola possibile (tipo quella
sopra) che riproduce il problema.
P.S. Questo e' un classico problema che si verifica quando si e'
sprovvisti di unit test (vedi 
http://junit.sourceforge.net/
)
-- 
{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}
SunGray aka Gabriele Lana
contact me @ 
gabrie...@fastwebnet.it
See you space cowboy ...

"iblinku" <NOSPAMv...@genie.itNOSPAM> wrote in message
news:TBHZc.241408$5D1.10...@news4.tin.it...

Allora il problema e' da qualche altra parte, perche' questa classe funziona
benissimo:
class pippo
{
int[][] salve ;
public pippo()
{ salve = new int[][] {{1,2,3,4},
      {2,3,4,5},
      {3,4,5,6}};
}
public void run()
{ int num = 4;
 if(salve[1][2] == num)
 { System.out.println("ok");
 }
}
public static void main(String[] args)
{ System.out.println("1");
 pippo p = new pippo();
 p.run();
}
}
Ciao.
Fabry.

 esecuzione.
Guarda che non è così: se di num hai creato solo il reference il
compilatore non ti darà errore...