Ciao Ragazzi,
Devo scrivere un metodo ricorsivo che riceve un array di int e inizializzi a zero ciascun elemento.
Il codice seguente legge un array da tastiera con un metodo ricorsivo, stampa il numero di elementi e il contenuto. Poi dovrebbe inizializzare gli elementi a 0 e stamparli.

L'errore dovrebbe essere nel metodo azzeraArray, perchè mi dà errore
"Exception in thread "main" java.lang.NullPointerException
at ricorsione.main(ricorsione.java:15)"


dove sbaglio?
Una domanda: perchè mi dice che il metodo ricorsivo deve essere "static"? Nel libro che sto studiando non lo specifica.

codice:
import java.io.*;
public class ricorsione {
	public static void main(String[] arg) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int[] x = new int[5];
		int[] a = new int[5];
		int count = readIntArray(x,0,br);  				//richiamo metodo ricorsivo
		System.out.println("Totale elementi: " + count);  // stampa numero elementi calcolato dal metodo ricorsivo  
		int i;
		for (i=0; i<count;i++)            				//Stampa gli elementi dell'array
			System.out.print(x[i]+" ");
		System.out.println();
		a = azzeraArray(x,0);
		for (i=0; i<count;i++)            				//Stampa gli elementi dell'array
			System.out.println(a[i]+" ");
	}
	private static int readIntArray(int[] a, int first,BufferedReader br) throws Exception {  //metodo ricorsivo per la lettura di br
		if (first == a.length)
			return 0;
		String s = br.readLine();
		if (s==null || s.equals(""))
			return 0;
		a[first] = Integer.parseInt(s);
		return 1+readIntArray(a,first+1,br);
	}
	
	private static int[] azzeraArray(int[] a, int first) {
		if (first == a.length)
			return null;
		a[first] = 0;
		return a = azzeraArray(a,first+1);
		}
            
grazie per l'aiuto