Array di tipi riferimento

di il
1 risposte

Array di tipi riferimento

Ragazzi sto avendo problemi con questo esercizio
Si consideri la struttura dati
class Elemento {
int valore;
int molteplicita;
}
Scrivere un metodo
static Elemento[] homework7 (int[] a)
in Java, che preso come parametro un array di numeri interi, restituisce un array di Elemento che deve avere lunghezza uguale al numero di elementi distinti presenti in a, e per ogni elemento n presente in a x volte, deve contenere un Elemento il cui valore sia n e la cui molteplicita sia x.
Se a vale null, il metodo deve restituire null.
Ad esempio, se a = {1, 5, 2, 5, 2, 5, 2, 1, 6} il metodo deve restituire un array contenente 4 oggetti di tipo Elemento (poiché ci sono 4 elementi distinti in a), con le seguenti coppie di valore e molteplicità: valore 1 con moltepliciità 2, valore 2 con molteplicità 3, valore 5 con molteplicità 3, valore 6 con molteplcità 1.
Ho iniziato facendo così ma non riesco poi ad andare avanti. Aiuto

class Elemento {
	   int valore;
	   int molteplicita;
	}

public class MainClass {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
        }

	static Elemento[] homework7 (int[] a){
		if (a==null) return null;
		boolean trovato=false; 
		int conto=0;
		for (int i=0; i<a.length; i++){
			for (int j=0; j<i; j++){
				if (a[i]==a[j]) {trovato=false;}
		}
		if (!trovato) {conto++;}
		}
		Elemento[] r = new Elemento[conto];
		
	}
}

1 Risposte

  • Re: Array di tipi riferimento

    Comincia a sistemare le cose semplici:
    - il ciclo interno non deve partire da zero, ma dal valore successivo a quello di i;
    - una volta trovato l'elemento, devi incrementare un contatore, non settare/resettare una variabile booleana.

    Una volta fatte queste cosette, vedrai che il resto viene da solo.

    Per tua curiosita': questo problema sarebbe risolvibile addirittura senza scrivere nemmeno un ciclo for/while. Ma non creco che sia questo lo spirito dell'esercizio...
Devi accedere o registrarti per scrivere nel forum
1 risposte