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.
grazie per l'aiutocodice: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); }

Rispondi quotando