Problema con Array

di il
5 risposte

Problema con Array

Salve a tutti,
ho risposto poco fa ad una domanda su yahoo answer di un utente che chiedeva di trovare quanti elementi fossero uguali in un array (conoscendo quali elementi andassero inseriti nell'array) quindi ho risolto in questo modo:

package it.matmacsystem; 

public class ArrayClass { 

public static void main (String[] args){ 

String A[] = {"pippo", "paperino", "pluto", "pluto", "pastore", "pippo", "pluto", "paperino", "pluto", "paperino", "pluto"}; 

String attuale; 

int pippo=0, paperino=0, pluto=0, pastore=0; 

for (int i = 0; i<A.length; i++){ 

attuale = A[i]; 

switch (attuale){ 
case "pippo": 
pippo++; 
break; 

case "paperino": 
paperino++; 
break; 

case "pluto": 
pluto++; 
break; 

case "pastore": 
pastore++; 
break; 

default: 
break; 
} 

} 

System.out.println("Gli elementi solo: " + A.length); 
System.out.println("Paperino: " + paperino + 
"\nPippo: " + pippo + 
"\nPluto: " + pluto + 
"\nPastore: " + pastore); 
System.out.println("La somma degli elementi contati è: " + (pippo+paperino+pluto+pastore)); 


} 

}
ma poi mi sono chiesto come potrei modificare l'algoritmo su un array di n elementi inseriti da un utente senza sapere a priori quali solo.
Ho provato diversi algoritmi ma sempre c'era un problema
Mi potete aiutare?

5 Risposte

  • Re: Problema con Array

    Potresti usare la classe scanner se vuoi che l utente inserisca da tastiera gli elemnti nell array.. pero devi prima far inserire all utente la lunghezza dell array cosi lo crei della lunghezza indicata e poi con l oggetto scanner catturi gli elementi.. questo e solo un metodo ma ci sono molti altri modi
  • Re: Problema con Array

    LucaProgrammer ha scritto:


    potresti usare la classe scanner se vuoi che l utente inserisca da tastiera gli elemnti nell array.. pero devi prima far inserire all utente la lunghezza dell array cosi lo crei della lunghezza indicata e poi con l oggetto scanner catturi gli elementi.. questo e solo un metodo ma ci sono molti altri modi
    Forse mi sono spiegato male, il problema non è l'inserimento degli elementi nell'array, ma come trovare quelli uguali senza sapere quali siano quelli che l'utente va ad inserire
  • Re: Problema con Array

    Mate13 ha scritto:


    ma come trovare quelli uguali senza sapere quali siano quelli che l'utente va ad inserire
    Se intendi "quelli che si ripetono (in qualunque quantità e posizione)", basilarmente basta un doppio ciclo annidato. Per ciascun elemento vai a cercare dalla posizione successiva in avanti se si ripete.
  • Re: Problema con Array

    Ah scusa, allora si come dice anche l utente andbin basta un doppio ciclo.. se ti interessa invece sapere anche la quantita in cui ogni elemento si ripete per non effettuare piu controlli sullo stesso elemento puoi memorizzarti gli elemnti gia controllati in un altro array in modo che con un if all interno del ciclo piu interno se vedi che l elemento e gia stato controllato puoi passare direttamente all iterazione successiva del ciclo piu esterno non so se si capisce quello che ho scritto ma sono da cellulare e mi e un po complicato scrivere il codice
  • Re: Problema con Array

    Una soluzione migliore richiede una "mappa" in cui la chiave è l'elemento e il valore è un "contatore". Per ogni elemento: se c'è nella mappa incrementi il contatore, altrimenti inserisci un 1. E basta una singola scansione lineare della sequenza.
Devi accedere o registrarti per scrivere nel forum
5 risposte