Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    220

    [JAVA] array come parametro di metodo

    ciao ragassi è un bel po' che programmillo in java e non avrei mai pensato di bloccarmi davanti a un problema del genere:
    dunque:

    private static int metodo(int[] array){
    int[] A1 = null;
    int[] A2 = null;
    int[] A3 = null;

    partition (array,k,A1,A2,A3);
    ......
    ......
    }

    //partiziona l'array di partenza in 3 parti in funzione di k
    private static void partition(int[] array, int k, int[] part1, int[] part2, int[] part3){

    //conta gli elementi maggiori, uguali o minori di k e li mette //nelle 3 parti: cont1,cont2,cont3 sono le dimemsioni dei 3 vettori, cioè il numero di elementi distribuiti

    part1=new int[cont1];
    part2=new int[cont2];
    part3=new int[cont3];

    // li riempie....
    }

    alla fine dell'esecuzione di partition dovrei avere A1,A2,A3 validi, e non null!!! gli array non vengono sempre passati per riferimento?

    vi ringrassio!!!

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [JAVA] array come parametro di metodo

    Originariamente inviato da stirkland
    ciao ragassi è un bel po' che programmillo in java e non avrei mai pensato di bloccarmi davanti a un problema del genere:
    dunque:

    private static int metodo(int[] array){
    int[] A1 = null;
    int[] A2 = null;
    int[] A3 = null;

    partition (array,k,A1,A2,A3);
    ......
    ......
    }

    //partiziona l'array di partenza in 3 parti in funzione di k
    private static void partition(int[] array, int k, int[] part1, int[] part2, int[] part3){

    //conta gli elementi maggiori, uguali o minori di k e li mette //nelle 3 parti: cont1,cont2,cont3 sono le dimemsioni dei 3 vettori, cioè il numero di elementi distribuiti

    part1=new int[cont1];
    part2=new int[cont2];
    part3=new int[cont3];

    // li riempie....
    }

    alla fine dell'esecuzione di partition dovrei avere A1,A2,A3 validi, e non null!!! gli array non vengono sempre passati per riferimento?

    vi ringrassio!!!
    In Java il passaggio avviene sempre per valore, in qualunque caso.
    Per i tipi primitivi viene passata, ovviamente, una copia del valore. Per gli oggetti viene passata una copia del reference.

    Quindi tu a partition() passi una copia dei reference A1, A2, A3, che valgono tutti null.
    Se anche nel metodo partition() tu assegni o alteri il valore di part1, part2, part3, modifichi solo la copia dei reference ma non gli originali A1, A2, A3.

    In pratica dentro partition() non puoi cambiare il valore di A1, A2, A3. Potresti cambiare al massimo il contenuto dei 3 array, se fossero stati allocati.

    In definitiva .... devi cambiare approccio.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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 © 2025 vBulletin Solutions, Inc. All rights reserved.