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

    [java] Inserimento in un array

    Ciao a tutti..

    ho dei problemi con l'inserimento di un elemento in un array non ordinato

    essendo che ho un array ed ho a che fare con una dimensione che mi limita le operazioni, dovrei riallocare l'array, giusto??

    io ho fatto cosi:
    codice:
    public void riallocaArray(long[]a){
    	long[]temp=new long[2*a.length];
    	for(int i=0;i<a.length;i++){
    		temp[i]=a[i];
    }
    	a=temp;
    }
    public void insert(long value,long[]a){
    	riallocaArray(a);
    	a[nElems++] = value; 
    }
    Poi nella classe di collaudo, nel main, l'ho richiamo direttamente cosi:
    codice:
    public static void main(String[] args){
    	long[]v1={1,2,3,4,5,6,7,8,9};
    	int maxSize = v1.length; 
    	HighArray arr = new HighArray(maxSize); 
    	arr.insert(77,v1);
    }

    Mi dite dove sbaglio, perche non mi parte proprio, sembrerebbe che io vada fuori indice, ma una volta che rialloco raddoppio la dimensione, almeno credo....

  2. #2
    L'istruzione

    codice:
    a=temp;
    e' errata. La variabile va fuori scope quando la funzione ritorna quindi la tua funzione
    riallocaArray non ha alcun effetto


    fai ritornare alle due funzioni l'array allocato e funzionerà.


    In generale comunque, la tua implementazione non mi sembra molto object oriented

    che ne dici di rendere l'array una variabile membro della classe HighArray ?

  3. #3
    Si, per motivi di tempo avevo scritto solo la parte d'interesse...
    cmq anche se faccio ritornare ai due metodi l'array allocato, non va lo stesso

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Originariamente inviato da dungedra
    Si, per motivi di tempo avevo scritto solo la parte d'interesse...
    cmq anche se faccio ritornare ai due metodi l'array allocato, non va lo stesso
    Posta il codice con la correzione che hai apportato.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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.