# NullPointerException | Thread



## b0unc3 (10. Jan 2007)

hi leudz, ich bekomm an kommentierter stelle eine NullPointerException aber leider weiß ich nicht warum 


```
import java.net.*;
import java.io.*;

public class GetNetworkIps {
	public static void main(String[] args) throws Exception {
		String startIp;
		String ip2;
		PingThread ping[] = null;
		
		InetAddress ip = null;
		
		BufferedReader r = new
		BufferedReader(new InputStreamReader(System.in));
		
		System.out.println("Bitte Ip eingeben: (192.168.1. << letze stelle frei lassen!!)");
		startIp = r.readLine();
		
		System.out.println();
		
		System.out.println("Timeout: ");
		String t = r.readLine();
		
		for (int i = 1; i <= 255; i++) {
			ip2 = startIp + i;
			ip = InetAddress.getByName(ip2);
			ping[i] = new PingThread(ip);    // NullPointerException
		}
	}
}
```

Hier ist der PingThread


```
import java.net.InetAddress;

class PingThread extends Thread {
	InetAddress ip;
	PingThread(InetAddress ip) {
		this.ip = ip;
	}
	
	public void run() {
		try {
			if (ip.isReachable( 2000 )) {
				System.out.println(ip);
			} else System.out.println("<><>" + ip);
		} catch (Exception ex) {
			System.err.println(ex.getMessage());
		}
	}
}
```


----------



## hupfdule (10. Jan 2007)

```
PingThread ping[] = null;
...
ping[i] = new PingThread(ip);
```

Deswegen. Dein Array ist null. Das musst du zuvor initialisieren. Da du offenbar 255 Threads haben willst, die du darin speicherst, sollte dieses dann also auch 255 Stellen groß sein. 

BTW: Warum fängst du die Schleife bei 1 an, statt bei 0? In Arrays (und quasi eigentlich immer in Programmiersprachen) beginnt die Zählung bei 0. Du würdest also die erste Stelle des Arrays nicht benutzen.


----------



## b0unc3 (10. Jan 2007)

ok danke die exception is weg.. aber sobald ich das timeout eingegeben habe, endet das programm einfach so :'( ...

auch wenn ich das timeout auf 4000 setze...

ich fang bei eins an, weil ich die ip (Bsp.: 192.168.1.0) nicht anpingen möchte


----------



## hupfdule (10. Jan 2007)

b0unc3 hat gesagt.:
			
		

> das timeout eingegeben habe, endet das programm einfach so :'( ...


Deine Threads werden nicht gestartet. Du erzeugst sie nur. Musst also noch ping_.start() machen.




			ich fang bei eins an, weil ich die ip (Bsp.: 192.168.1.0) nicht anpingen möchte
		
Zum Vergrößern anklicken....

Dann solltest du das beim Zugriff des Arrays beachten und dort ping[i-1] schreiben._


----------



## b0unc3 (11. Jan 2007)

ok danke hab deinen tipp beherzigt und jetzt funzt auch alles


----------

