Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [java - eclipse] metodo ricorsivo che inizializza array

    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

  2. #2

    Re: [java - eclipse] metodo ricorsivo che inizializza array

    Originariamente inviato da forza_sugar
    dove sbaglio?
    Nel restituire null, qui:
    Originariamente inviato da forza_sugar
    codice:
    	private static int[] azzeraArray(int[] a, int first) {
    		if (first == a.length)
    			return null;
    		a[first] = 0;
    		return a = azzeraArray(a,first+1);
    		}

  3. #3

    Re: Re: [java - eclipse] metodo ricorsivo che inizializza array

    Originariamente inviato da VincenzoTheBest
    Nel restituire null, qui:
    lo sospettavo...e come faccio a interrompere l'esecuzione allora?

  4. #4

    Re: Re: Re: [java - eclipse] metodo ricorsivo che inizializza array

    Originariamente inviato da forza_sugar
    lo sospettavo...e come faccio a interrompere l'esecuzione allora?
    Restituendo l'array:
    codice:
    private static int[] azzeraArray(int[] a, int first) {
            if (first == a.length)
                return a;
    	a[first] = 0;
    	return azzeraArray(a, first+1);
    }

  5. #5

    Re: Re: Re: Re: [java - eclipse] metodo ricorsivo che inizializza array

    Originariamente inviato da VincenzoTheBest
    Restituendo l'array:
    codice:
    private static int[] azzeraArray(int[] a, int first) {
            if (first == a.length)
                return a;
    	a[first] = 0;
    	return azzeraArray(a, first+1);
    }
    e c'hai ragione ...grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.