Visualizzazione dei risultati da 1 a 8 su 8

Discussione: esercizio array

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    123

    esercizio array

    Ciao a tutti,
    avrei bisogno del Vostro aiuto riguardo un esercizio che non riesco a risolvere (premetto che stò facendo un corso Java e sono arrivato a questo punto).

    scrivere metodo in Java che, data una stringa s ed un array di caratteri c, restituisca un array di interi conta tale che conta[i] sia il numero di occorrenze del carattere c[i] nella stringa s.
    (Esempio:se s = "ciao pippo" e c={'a','b','c','p'}, il metodo restituisce conta = {1,0,1,3}).

    Ci ho provato varie volte, e noto che la mia grande difficoltà stà nel gestire le stringhe con gli array (per prendere la stringa uso Scanner, poi mi faccio dare la dimensione dell'array sempre con Scanner ma uso un intero e dopo faccio tantissima confusione nei passaggi intero stringa/intero carattere)

  2. #2
    Prova così:

    codice:
    public int[] occorrenze(String s, char[] c) {
    	int[] conta = new int[c.length];
    	int index = 0;
    	for (char carattere : c) {
    		for (int i = 0; i < s.length(); i++) {
    			if (s.charAt(i) == carattere) {
    				conta[index]++; 
    			}
    		}
    		index++;
    	}
    	return conta;
    }
    Ovviamente maiuscole e miniscole sono considerati caratteri differenti. Per non effettuare distinzione tra maiuscole e minuscole occorre apportare qualche piccola modifica al codice.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    123
    dopo un pò di ore passateci sopra io l'ho fatto così ed a logica, provandolo anche a fare su carta sembra che possa funzionare...ma invece netbeans mi da errore...
    qualcuno può aiutarmi...giusto per capire dove sbaglio, senza fare un semplice copia e incolla della soluzione propostami sopra...

    static public void occorrenza(String s, char[] c) {
    int[] conta = new int[c.length];
    int index=0;
    for(int i=0;i<s.length();i++)
    {
    for(int j=0;j<c.length;j++)
    {
    if(s.charAt(i)==c[j])
    {
    conta[index]=conta[index]++;
    }
    }
    index++;
    }
    for(int i=0;i<conta.length;i++)
    {
    System.out.println(conta[i]+'\t');
    }
    System.out.println();
    }



    public static void main(String[] args) {
    // TODO code application logic here
    Scanner sc = new Scanner(System.in);
    System.out.println("Inserisci stringa : ");
    String stringa = sc.nextLine();
    char[] caratteri = {'b','f','g','i'};
    occorrenza(stringa,caratteri);
    }

  4. #4
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    per caso vieni dai linguaggi procedurali???

    io ho risolto così


    codice:
    import java.nio.charset.Charset;
    
    
    public class MyClass {
    	
    	public static void main(String args[])
        {
    		String pippo="ciao mamma guarda come mi diverto";
    		char[] p={'c','m','z','o'};
    		MyClass a=new MyClass();
    		int occorenze[]=a.occorrenze(pippo, p);
    		for (int i : occorenze) {
    			System.out.print(i);
    		}
        }
    	
    	public int[] occorrenze(String s, char[] c) {
    		
    		int[] conta = new int[c.length];
    		int i=0;
    		for (char d : c) {
    			conta[i]=(s+" ").split((new Character(d)).toString()).length-1;			
    			i++;
    		}
    		
    		return conta;
    	}
    
    }

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    123
    Hai capito vengo dal bruttissimo procedurale
    Chiedevo aiuto di correzione del mio codice perchè ancora non ho visto il for fatto in quella maniera e neanche quei metodi come split, toString...al momento l'unico che ho visto è charAt...

    Quindi il mio codice è proprio tutto tutto sbagliato...perchè pensavo andasse bene...
    Questo Java mi stà facendo impazzire...

  6. #6
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    per farlo come lo vuoi fare te invece è così

    codice:
    	static public void occorrenza(String s, char[] c) {
    		int[] conta = new int[c.length];
    		for(int i=0;i<s.length();i++)
    		{
    			for(int j=0;j<c.length;j++)
    			{
    				if(s.charAt(i)==c[j])
    				{
    					conta[j]++;
    				}	
    			}
    		}
    		for(int i=0;i<conta.length;i++)
    		{
    			System.out.println(conta[i]+"\t");
    		}
    		System.out.println();
    	}
    
    
    
    		public static void main(String[] args) {
    			// TODO code application logic here
    			Scanner sc = new Scanner(System.in);
    			System.out.println("Inserisci stringa : ");
    			String stringa = sc.nextLine();
    			char[] caratteri = {'b','f','g','i'};
    			occorrenza(stringa,caratteri);
    		}

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    123
    grazie mille stefano...ora ho capito dove sbagliavo...
    ancora grazie mille...

  8. #8
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    prego di niente


    Ti spiego brevemente cosa avevo fatto sopra

    split è un metodo degli oggetti String che divide una stringa a seconda di uno o più caratteri e li mette in un vettore di stringhe

    ad esempio se facciamo lo split della stringa "amiamo" con la stringa "m" il risultato è un vettore con 3 stringhe {"a","ia","o"} questo vuol dire che ci sono 2 occorrenze (la lunghezza del vettore -1). Poiché la funzione split prende come argomento un stringa e non un char devo trasformare il carattere in stringa tramite l'oggetto Character e il metodo toString

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.