March 9
Contare il numero di occorrenze di ogni lettera alfabetica all'interno di una stringa di testo è un compito che si rivela essere più complessa di quanto ci si potrebbe aspettare. Tuttavia, il processo non è necessariamente difficile. Come con qualsiasi attività di programmazione, è necessario abbattere in piccoli passi, concentrandosi su ognuno a turno. Ci sono vari modi per contare le occorrenze di carattere in una stringa, ma l'approccio più semplice è quello di sfruttare il fatto che i personaggi sono variabili di tipo primitivo con valori numerici.
1 Crea il tuo stringa di testo. Se non si dispone già di una stringa nel programma, utilizzare il seguente codice per creare uno:
String subject = "Qui ci sono alcuni personaggi disposti in una stringa";
Creare un array di interi di mantenere un contatore per ogni lettera dell'alfabeto:
int [] lettere = new int [26];
Istanziare gli elementi dell'array, impostando ogni uno a zero iniziale:
for (int l = 0; l <letters.length; l ++)
{Lettere [l] = 0; }
2 Creare un ciclo per scorrere i caratteri nella stringa. Utilizzare il seguente codice per scorrere la corda, la memorizzazione di ogni carattere come un valore intero:
for (int c = 0; c <subject.length (); c ++) {
int charNum = subject.charAt (c);
// Ulteriori elaborazioni qui
}
Questo ciclo itera una volta per ogni lettera della stringa. Ogni volta che il corpo del ciclo viene eseguito, esso memorizza il carattere corrente come un tipo intero primitivo.
3 Effettuare un test condizionale sul personaggio per assicurarsi che si tratta di una lettera. Aggiungere il seguente test all'interno del ciclo:
if ((charNum> = 'A' && charNum <= 'Z') || (charNum> = 'a' && charNum <= 'z')) {
// Ulteriori elaborazioni qui
}
Questo codice svolge due coppie di test. I primi test coppia che il personaggio è tra la maiuscola "A" e personaggi "Z". Il secondo test coppia che il personaggio è tra le versioni minuscole. Se una di queste coppie di test restituisce un valore vero, il contenuto della dichiarazione condizionale esegue; se il carattere non è una lettera, l'intera prova restituisce false.
4 Effettuare un test condizionale per verificare la presenza di caratteri minuscoli. Il vostro programma può trattare le versioni maiuscole e minuscole di personaggi nello stesso modo, ma hanno diversi valori numerici. Aggiungere il seguente test all'interno del if:
if (charNum> = 'a' && charNum <= (char) 'z') charNum- = 32;
Questo codice indica al programma di utilizzare gli stessi valori numerici per i caratteri minuscoli come per le versioni maiuscole, sottraendo la differenza tra loro. Incrementare il contatore elemento array per il carattere corrente nel seguente modo:
lettere [charNum-'A '] ++;
Questo codice indica Java per aggiungere uno al contatore array per il carattere corrente, con la lettera A in posizione zero e Z nella posizione 25. Sottraendo il valore della lettera maiuscola "A" dà il codice nella posizione corretta.
5 Metti alla prova le variabili contatore. Aggiungere il seguente ciclo dopo il ciclo personaggio, l'emissione dei valori ad ogni elemento contatore:
for (int i = 0; i <letters.length; i ++)
{System.out.println ((char) (i + 'A') + "" + lettere [i]); }
Si dovrebbe vedere ogni lettera dell'alfabeto scritte a fianco il suo contatore all'interno della stringa.