Contare Spazi dopo vocale in Java

di il
12 risposte

Contare Spazi dopo vocale in Java

Ciao Ragazzi , sto svolgendo questo esercizio in Java, vi lascio il testo:

Scrivere un programma Java chiamato Spazi che chiede all’utente di inserire una stringa e stampa il numero di spazi che sono seguiti da una vocale. Per esempio, se si immette “Ciao, imparo a programmare in Java!” il programma deve stampa 3.

A primo impatto mi sembrava semplice , ma non riesco a capire perché , ma il contatore degli spazi mi da come risultato 0.

Ecco il mio codice:

package Tutorato2;
import fond.io.InputWindow;
import fond.io.OutputWindow;
public class spazi {
    public static void main(String[] args){
        InputWindow input = new InputWindow();
        OutputWindow out = new OutputWindow();
        String frase = input.readString("Inserisci la frase");
        int count=0;
        for(int i=0;i<frase.length();i++){
            if((frase.charAt(i)=='a' || frase.charAt(i)=='e' || frase.charAt(i)=='i' || frase.charAt(i)=='o' || frase.charAt(i)=='u') && frase.charAt(i)+1==' '){
                count++;
 
            }
        }
        out.write("Spazi dopo alle vocali:"+count);
    }
   
}

Credo che il problema sia nell'individuare gli spazi , ma non riesco a trovare una soluzione! Qualcuno sa come fare ?

12 Risposte

  • Re: Contare Spazi dopo vocale in Java

    Controlla dove hai messo il +1

  • Re: Contare Spazi dopo vocale in Java

    Ciao , grazie della risposta ,ma non è questo ,   già inizialmente avevo messo il +1 dentro le parentesi , ma se lo metto dentro le parentesi non mi stampa proprio niente, neanche che il contatore è uguale a 0, mi rimane il pannello di output bianco , come se nel codice ci fosse un'errore nella compilazione ma che non viene segnalato. Il problema penso sia proprio sul conteggio di questi spazi bianchi , ma non riesco a capire quale di preciso.

  • Re: Contare Spazi dopo vocale in Java

    Beh, potresti anche fidarti delle risposte che ti vengono date.

    Rifletti sul perché il +1 deve stare dentro le parentesi e rifletti anche sul fatto che il ciclo for deve terminare un carattere prima ovvero 

    i<frase.length()-1;

  • Re: Contare Spazi dopo vocale in Java

    Mi fido , non ho detto nulla , solo che avevo già provato il +1 nelle parentesi ma non funzionava ;)

    Comunque si , con il -1 funziona , potresti spiegarmi il perchè ? Grazie Mille comunque!!!

  • Re: Contare Spazi dopo vocale in Java

    Anzi credo di aver capito , visto che comunque la prima posizione parte da 0 e non da 1 , no?

  • Re: Contare Spazi dopo vocale in Java

    No, prova a vedere che valori assume i ad esempio per una stringa di 5 caratteri

  • Re: Contare Spazi dopo vocale in Java

    Ad ogni modo, la consegna dice di contare il numero di spazi che sono SEGUITI da una vocale, non che sono PRECEDUTI da una vocale… ergo, lo spazio deve stare PRIMA della vocale, non dopo (che nell'esempio le due specifiche portino allo stesso risultato è solo un caso).

  • Re: Contare Spazi dopo vocale in Java

    Corretto, neanche avevo letto ma cambia poco

  • Re: Contare Spazi dopo vocale in Java

    Comunque funziona , grazie a entrambi dell'aiuto,  potreste spiegarmi il motivo di quel -1?

  • Re: Contare Spazi dopo vocale in Java

    Non funziona come dice l'esercizio se non modifichi il codice

  • Re: Contare Spazi dopo vocale in Java

    No intendo solo il -1 all'interno del for il resto lo ho capito 

  • Re: Contare Spazi dopo vocale in Java

    Biagio,se non sbaglio il motivo del -1 è che hai un charAt(i+1): se la stringa è lunga 15 caratteri, l'indice va da 0 a 14, ma quando hai i=14 ottieni  i+1=15, quindi charAt(15) che dà errore

Devi accedere o registrarti per scrivere nel forum
12 risposte