Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    347

    Preimpostare dimensione array

    non sapevo che titolo mettere, comunque mi capitano parecchi esercizi dove in base a quello che "esce" da un ciclo va creato un array di una certa dimensione...
    ad esempio ora stavo guardando una traccia di un esame passato che chiede tra le altre cose di creare un metodo che comprima una matrice "Un metodo comprimiMatrice che riceve una matrice rettangolare di boolean M e restituisce array V ottenuto nel seguente modo:
    a. le prime due posizioni di V sono riservate al numero di righe e di colonne di M
    b. considerando le singole righe di M, per ogni sequenza contigua di true o di false deve essere aggiunto (accodato) in V un intero il cui modulo è pari alla lunghezza di tale sequenza. Tale intero sarà considerato positivo nel caso di una sequenza di true, negativo in caso di una sequenza di false...
    Mi sono bloccato gia all'inizio perchè non capisco come fare a preimpostare la dimensione dell'array...

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    147
    Non mi sono soffermato molto sul testo dell'esercizio, in ogni caso se riesci a stabilire quanti elementi devi inserire, l'array puoi anche solo dichiararlo e crearlo con la giusta dimensione appena prima degli inserimenti. Altrimenti se vuoi cambiare approccio puoi utilizzare la classe ArrayList, che permette di creare array senza preoccuparti della loro dimensione durante l'esecuzione.

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    347
    cioè? puoi spiegarti meglio? sono parecchio principiante in java
    lasciando stare la traccia che l'ho messa come esempio, in molti problemi mi viene chiesto di creare array, da riempire poi con un ciclo ad esempio però non sapendo quanto deve essere grande

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    147
    Non c'è una regola generale, dipende sempre da ciò che si deve fare... Se sei principiante ti consiglio di prendere confidenza con gli array con un approccio di questo tipo:

    codice:
    int[] array;
    int numeroElementi;
    
    //fai le tue elaborazioni e calcola quanti elementi inserire
    
    numeroElementi = 15;
    array = new int[numeroElementi];
    Non è un approccio molto efficiente, ma così capisci bene come funziona il meccanismo...

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    347
    eh infatti ho scritto qui proprio perchè volevo evitare una soluzione del genere XD così dovrei fare 2 volte lo stesso procedimento(ciclo)

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    147
    Allora utilizza la classe ArrayList, così non devi dichiarare nessuna dimensione e puoi inserire ogni elemento con la funzione add(). Vedi un po' su Google, sono disponibili tantissimi esempi...

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    347
    mi sono letto qualcosa, ho visto come si creano, però non ho capito quando voglio aggiungere una elemento come si fa e come impostare il tipo di array...
    ad esempio mi creo l'array
    codice:
    ArrayList array = new ArrayList();
    e poi per aggiungere un elemento in coda si fa così?
    codice:
    array = ArrayList.add(4)
    e,come ho detto prima, come faccio a specificare che tipo di array è?
    penso mi dia un errore se prima aggiungo un int e poi un char ad esempio...

  8. #8
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219
    Se non specifichi niente, di default è di tipo Object.
    Se vuoi un tipo specifico:
    codice:
    ArrayList<Integer> list=new ArrayList<Integer>();

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    normalmente non mi intrometto in discussioni accademiche... però considerando la mia oramai giurassica esperienza universitaria, quando ti appioppavano esercizi del genere normalmente volevano che venissero risolti usando meno "cose pronte" possibile.

    In altre parole, inizializzi un array di "generose" dimensioni: il caso peggiore del tuo esercizio è che vi sia un'alternanza di true e false, che corrisponderebbe ad un array del genere:

    codice:
    V = {R, C, 1, -1, 1, -1, ... -1};
    ovvero di dimensioni
    codice:
    dim = 2 + R x C
    Quindi, parti con l'inizializzare un array di dimensioni dim, che poi potrai andare a trimmare all'abbisogna
    codice:
    int[] V = new int[M.length*M[0].length+2];
    altro "segreto" di int[] è che se ti limiti ad inizializzare un array, la JVM setta tutti gli elementi a 0, cosa che puoi sfruttare in seguito per determinare la dimensione "ottimale" dell'array V
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

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.