PDA

View Full Version : contare stringhe


Albsss
06-06-2014, 19:58
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

sottovento
07-06-2014, 06:08
Prova con la String.indexOf(): fintanto che la indexOf() ti ritorna un valore >= 0, incrementi il contatore.

Do' per scontato che utilizzerai la

indexOf(String str, int fromIndex)

ovviamente ripartendo dalla posizione precedente + 1

Albsss
09-06-2014, 17:49
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: 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ì: 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

sottovento
10-06-2014, 12:47
Se vuoi seguire questa strada, devi tener conto di due cose:
1 - le stringhe non si possono comparare con il simbolo == ; bensi' devi usare il metodo equals();
2 - non puoi confrontare la stringa di partenza con il set di stringhe che vuoi cercare, perche' in realta' vuoi contare le sottostringhe. Dovrai quindi estrarre dalla stringa originale una sottostringa da confrontare.

ciao