Visualizzazione dei risultati da 1 a 7 su 7

Discussione: contare stringhe

  1. #1
    Utente di HTML.it L'avatar di Albsss
    Registrato dal
    Nov 2012
    Messaggi
    11

    contare stringhe

    Salve a tutti....mi servirebbe una mano. Sto facendo un programmino in java e dovrei creare un metodo che mi conti le stringhe...mi spiego meglio: ho un file con tante lettere e vorrei sapere quante lettere ci sono in tutto e poi anche quante "p" ci sono ad esempio...come potrei fare...ho provato con il ".size()" ma mi dice che vale solo per gli interi...come faccio? grazie

  2. #2
    Utente di HTML.it L'avatar di torn24
    Registrato dal
    Aug 2008
    Messaggi
    551
    Ciao , non conosco java , ma è un problema che si presenta in tutti i linguaggi di programmazione ...

    puoi risolvere in diversi modi , uno leggere tutto il file e salvarlo in una variabile string , dopo puoi usare i metodi disponibili della classe string , come string.length , string.indexof , per sapere la lunghezza , e tramite un ciclo for ricercare il numero di occorrenze di un carattere con il metodo indexof.



    Ma a me , sembra più semplice , leggere il file carattere per carattere in un ciclo , e incrementare un contatore per sapere il numero di caratteri totali , e tramite confronti ES: if(carattere == 'p') varP++; contare le occorrenze dei caratteri di cui vuoi sapere il numero .
    Tecnologia

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2014
    residenza
    Ancona, Italia
    Messaggi
    16
    per la lunghezza e il numeri di caratteri immessi puoi usare semplicemente .length riportato da torn24, poi per sapere quanti caratteri contiene potresti usare un for each. Crei una funzione tipo private int NumLettereSpecifiche(String string,char c) e all'interno fai un for each.

  4. #4
    Utente di HTML.it L'avatar di Albsss
    Registrato dal
    Nov 2012
    Messaggi
    11
    ciao...grazie della risposta però la indexof ancora non l ho studiata ancora. Ce n'è bisogno per forza? io ho provato a fare così però mi riesce fino a un certo punto:
    codice:
    public int ContaLettere(String s){
            int count = 0;
            char[]a = {'x','r','f','v','d','g','l','c'};
            boolean trovato = false;
            for(int i=0; i<s.length();i++) {
                for(int j=0;j<a.length && trovato==false;j++) {
                    if(s.charAt(i) == a[j]){
                        count=count+1;
                        trovato = true;
                    }
                }
                trovato = false;
            }
            return count;
        }

    questo è il metodo per cui data una stringa mi riporta quante volte ci sono le lettere dell array di char. Ora se volessi proprio contare le stringhe (per esempio se ho un file contenente molti codici fiscali che possono ripetersi anche) come potrei fare? Ho provato a cambiare l array di char in un array di string così:
    codice:
    public int ContaStringhe(String s){
            int count = 0;
            String[]a = {"gsppsp34o56m","rmnddns85m4k","frcsld21lod2","vlntfrt54fr5","drfrb34ju56u","gvnspt60lo3f","lrgla20nf4fd","cldglnt34gj5"};
            boolean trovato = false;
            for(int i=0; i<s.length();i++) {
                for(int j=0;j<a.length && trovato==false;j++) {
                    if(s == a[j]){
                        count=count+1;
                        trovato = true;
                    }
                } 
                trovato = false;
            }
            return count;
        }
    però non funziona...cosa sbaglio?? grazie mille
    Ultima modifica di Albsss; 09-06-2014 a 18:01

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2014
    residenza
    Ancona, Italia
    Messaggi
    16
    boolean trovato =false; for(int i=0; i<s.length();i++) {
    for(int j=0;j<a.length && trovato==false;j++) {
    if(s == a[j]){
    count=count+1;
    trovato = true;
    }
    }
    trovato =false;


    ad occhio mi sembra sbagliato il for a livello concettuale, credo che da come lo hai scritto ti restuirà sempre tutto s.

    io non la farei così complicata la condizione sul for.

    int count = 0;
    String s = new String("argonauta");
    char[] a = {'a','b'};


    // inizio a scorrere gli elementi di s
    for (int i = 0; i < s.length(); i++) {

    // per il primo elemento di s provo a vedere se un elemento di a corrisponde
    for (int j = 0; j < a.length ; j++) {
    if (s.charAt(i) == a[j]) {
    count = count + 1;
    System.out.println(a[j]);
    }
    }


    }
    System.out.println("numero di conteggi: " + count);


  6. #6
    Utente di HTML.it L'avatar di Albsss
    Registrato dal
    Nov 2012
    Messaggi
    11
    ciao...scusami ma sicuramente sono io che non mi so spiegare bene...ci riprovo un'altra volta. Ho un file contenente diverse parole (es: paolo,francesco,giovanni,paolo,giovanni,nino,nino, maria,paolo) e devo creare un metodo per contare quante volte risulta un nome (in questo caso mi deve restituire "N° voti per paolo: 3"). Il metodo precedente funziona ma conta quante volte risulta una lettere in una parola e non è quello che voglio fare....in questo senso come posso modificare il metodo? grazie delle risposte precedenti e future

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Albsss Visualizza il messaggio
    Ho un file contenente diverse parole (es: paolo,francesco,giovanni,paolo,giovanni,nino,nino, maria,paolo) e devo creare un metodo per contare quante volte risulta un nome (in questo caso mi deve restituire "N° voti per paolo: 3").
    Ascolta, con una premessa di questo tipo, a me già verrebbe in mente almeno la seguente domanda: vuoi leggere il file e cercare direttamente lì dentro le occorrenze di un solo nome e basta .... o vuoi ottenere in memoria una struttura dati che contiene il "conteggio" di tutti i nomi?
    Perché se è quest'ultimo caso, la cosa più semplice e lineare è quella di usare una "Map" in cui le chiavi sono String (i nomi) e i valori sono Integer (un contatore). Leggi il file e prendi un nome per volta: c'è nella mappa? No: inserisci la associazione con contatore=1 / Sì: incrementi il contatore.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.