Visualizzare tutte le lettere

di Anonimizzato31874 il
11 risposte
Scrivere un programma che legge una riga di testo che termina con un punto, che funge da valore sentinella.
visualizzare tutte le lettere presenti nel testo, una per riga e in ordine alfabetico,
indicando il numero di volte che si presenta nel testo. Utilizzare un array di tipo base int di lunghezza 21,
cosi che l'elemento all'indice 0 contenga il numero di lettere "a", l'elemento all'indice 1 contenga il numero
di lettere "b" e cosi via via ,considerare come input sia le lettere maiuscole, sia quelle minuscole ma poi nel conteggio
considerarle uguali.
Seguente codice che ho scritto..come posso fare per far uscire tutte le lettere nell'apposito indice?

public static void main(String[] args) {
Scanner tastiera = new Scanner(System.in);
int [] dimensione = new int[21];
char c = tastiera.next().charAt(0);
int risultato = trovaIndice(c);
System.out.println(risultato);
}
public static int trovaIndice(char in) {
int i = (int)in - (int)'a';
return i;
}

11 Risposte

  • Continui a postare tutto l'esercizio ma non si può discutere di tutto. La domanda specifica qual è?

    Con quel codice fai l'input di un solo carattere ma ti viene chiesto l'input di una riga terminata da un punto. Prima di tutto devi fare questo input.

    Tu hai le basi del linguaggio? Hai mai fatto esercizi più semplici? Altrimenti non potrai andare avanti
  • Fabrizio1993 ha scritto:


    int [] dimensione = new int[21];
    Le lettere ASCII sono 26. O le consideri tutte 26, oppure se vuoi considerare solo quelle italiane NON basta "scalare" il valore di 'a', perché in mezzo ci sono j k w x y e quindi servirebbe una mappatura specifica.

    Fabrizio1993 ha scritto:


    int i = (int)in - (int)'a';
    In Java per via della ben nota binary numeric promotion, a fronte di "un char meno un char", entrambi vengono implicitamente convertiti a int e il risultato è un int. In sostanza, quei cast NON servono:
    char a = 'a';
    char d = 'd';
    
    int offset = d - a;   // vale 3
  • Per far scrivere l'utente serve il tastiera.nextLine;
    se l'utente scrive " ciao vado a fare la spesa" , come faccio a far apparire che nell'indice 0 ci sono 5 'a', e via dicendo..a meno che non abbia capito l'esercizio...
    devo usare il ciclo for?
  • E magari farei attenzione anche al case...
  • Si ma il ciclo for con che lo faccia? mica posso fare la lunghezza del carattere...devo creare una variabile lunghezza ??
  • Non ha senso quello che ho detto..
  • Un ciclo va bene ma non un for. Rileggi nell'esercizio quando termina la stringa
  • While?
    Ho difficoltà nell'impostarlo però, una dritta?
  • Fabrizio1993 ha scritto:


    While?
    Ho difficoltà nell'impostarlo però, una dritta?
    No, basta anche un for:
    for (int i = 0; i < strInput.length(); i++) {
        char ch = strInput.charAt(i);
    
        // se ch è il punto, fai un break;
        // continua con il resto della logica
    }
  • Perfetto
    Poi la condizione if e il gioco è fatto
    Grazie mille
  • E se il punto non lo hai inserito?

    L'esercizio, dal punto di vista didattico, ti dice di attendere il punto quindi ci si attende che venga usato il while.
Devi accedere o registrarti per scrivere nel forum
11 risposte