Array di Array

di il
7 risposte

Array di Array

Salve, piacere di stare qui con voi. Sono iscritto da poco e la principale ragione per cui mi sono iscritto è per poter ricevere del supporto da chi mastica meglio di me il linguaggio di programmazione Java. Mi stavo cimentando in un esercizio che - mi pare - chieda un array di due elementi diversi (generici, ad alternanza, ad esempio: a b a b ..., ma in questo caso prendiamo come esempio i colori bianco e nero a ripetizione). Per ciascuno di questi due elementi c'è un array di elementi dello stesso tipo dell'array principale, mi spiego meglio:

l'array principale è vuoto inizialmente. Inserisco da input un elemento BIANCO, che prenderà la prima posizione dell'array. Se inserisco un nuovo elemento di tipo BIANCO, esso prenderà posizione nel primo indice del sotto-array facente parte del primo elemento. Se inserisco un elemento NERO esso prenderà posizione nel secondo indice dell'array principale e di qui il ragionamento fatto per l'elemento bianco. Poi se inserisco nuovamente BIANCO, si crea un terzo indice e via così...

Dovrei implementare il metodo add per gli elementi che inserisco che fa esattamente le cose scritte qui sopra e un metodo remove che rimuove l'ultimo elemento del sotto-array restituendolo.

Potreste aiutarmi? Se qualcosa non è chiaro sono disponibile a rendervi più chiara la situazione

7 Risposte

  • Re: Array di Array

    Brawler ha scritto:


    mi pare - chieda un array di due elementi diversi (generici, ad alternanza, ad esempio: a b a b ...,
    Dovresti chiarire meglio questo aspetto. Il "tipo" degli elementi di un array è UNO solo. Se hai un Object[] il tipo degli elementi è Object. Poi ciascun elemento può fare riferimento a es. un String, un Integer, ecc...
  • Re: Array di Array

    andbin ha scritto:


    Brawler ha scritto:


    mi pare - chieda un array di due elementi diversi (generici, ad alternanza, ad esempio: a b a b ...,
    Dovresti chiarire meglio questo aspetto. Il "tipo" degli elementi di un array è UNO solo. Se hai un Object[] il tipo degli elementi è Object. Poi ciascun elemento può fare riferimento a es. un String, un Integer, ecc...
    Sì, temo di aver sbagliato. Penso sia esattamente come dici tu.
  • Re: Array di Array

    Ho provato a ragionarci su e pensavo di creare una classe enum del tipo

    public enum Colours {
    BIANCO, NERO
    }

    e di creare un arraylist nella classe MainArray del tipo ArrayList<Colours> colori = new ArrayList<>();

    Secondo te può andare?


    Edit: il MainArray e il SubArray devono avere una loro capacità stabilita da input, quindi penso che con l'ArrayList non si possa fare ma solo con comuni array di Java
  • Re: Array di Array

    Brawler ha scritto:


    public enum Colours {
    BIANCO, NERO
    }

    e di creare un arraylist nella classe MainArray del tipo ArrayList<Colours> colori = new ArrayList<>();

    Secondo te può andare?
    Di per sé è corretto. Ciascun elemento nella lista potrà SOLO essere: una delle costanti della enum, oppure null .

    Brawler ha scritto:


    Edit: il MainArray e il SubArray devono avere una loro capacità stabilita da input, quindi penso che con l'ArrayList non si possa fare ma solo con comuni array di Java
    Puoi usare un Colours[] invece che una lista.
  • Re: Array di Array

    andbin ha scritto:


    Brawler ha scritto:


    public enum Colours {
    BIANCO, NERO
    }

    e di creare un arraylist nella classe MainArray del tipo ArrayList<Colours> colori = new ArrayList<>();

    Secondo te può andare?
    Di per sé è corretto. Ciascun elemento nella lista potrà SOLO essere: una delle costanti della enum, oppure null .

    Brawler ha scritto:


    Edit: il MainArray e il SubArray devono avere una loro capacità stabilita da input, quindi penso che con l'ArrayList non si possa fare ma solo con comuni array di Java
    Puoi usare un Colours[] invece che una lista.
    Uhm, ci provo e ti faccio sapere!
  • Re: Array di Array

    Allora, ho fatto qualcosa ma mi sono bloccato.
    public class MainArray {
    	
    	int n = 0; // dimensione del main array
    	int used = 0; // spazio usato sulla quantità n
    	ElementArray[] element; 
    	
    	MainArray(int n) {
    		this.n = n;
    		element = new ElementArray[n];
    	}
    	
    	public int getSize() {
    		return used;
    	}
    	
    	public boolean isEmpty() {
    		if (used == 0)
    			return true;
    		return false;
    	}
    	
    	public void add(int capacity, Colours c) throws MainArrayOutOfBoundException, ElementArrayOutOfBoundException {
    				
    		if (used >= n)
    			throw new MainArrayOutOfBoundException("Il Main Array è pieno, non è possibile inserire un nuovo elemento");
    		
    		ElementArray elemento = new ElementArray(capacity);
    		element[used] = elemento;
    		used++;			
    		
    	}
    	
    }
    
    
    public class ElementArray {
    	
    	Colours[] colore;
    	int size = 0;
    	
    	ElementArray(int size) {
    		this.size = size;
    		colore = new Colours[size];
    		System.out.print("L'element array ha dimensione massima: " + size);
    	}
    	
    	public int dimensione() {
    		return size;
    	}
    	
    }
    Dovrei lanciare l'exception nel metodo add per il quale l'element array è pieno ma non so come gestire il riempimento di quest'ultimo.

    Edit: è in definitiva un array che per ciascun indice ha un array. Quindi, se l'elemento inserito è BIANCO e il l'ultimo elemento dell'element array è NERO, viene creato un nuovo indice nel main array per cui viene inizializzato un array di NERO. Ovviamente manca il Main, queste sono le due classi da gestire
  • Re: Array di Array

    Brawler ha scritto:


    Edit: è in definitiva un array che per ciascun indice ha un array.
    Questo è chiaro dalla struttura.

    Brawler ha scritto:


    Quindi, se l'elemento inserito è BIANCO e il l'ultimo elemento dell'element array è NERO, viene creato un nuovo indice nel main array per cui viene inizializzato un array di NERO.
    Questo invece non è chiaro, quale è il senso di questa logica? E perché nel add il Colours c non lo stai usando? Mi sfugge qualcosa .... (che ovviamente non so, non avendo idea degli obiettivi finali)
Devi accedere o registrarti per scrivere nel forum
7 risposte