Contador de Vogais

5 respostas
java
A

Olá pessoal estou começando a programar em JAVA e me deparei com um exercicio que não consigo resolver.

public class ContadorVogais {

private final String[] sequencia;

public ContadorVogais(String[] sequencia) {
    this.sequencia = sequencia;
}

public static void main(String args[]) {
    ContadorVogais contadorVogais = new ContadorVogais(new String[]{"A", "p", "e", "s", "aaa", "r", "d", "e",
        "v", "o", "c", "e", "a", "m", "a", "n", "h", "a", "h", "a",
        "d", "e", "s", "e", "r", "o", "u", "t", "r", "o", "d", "i", "a"});
    
   	
    
    System.out.println("Total de 'a' : " + contadorVogais.totalA());
    System.out.println("Total de vogais : " + contadorVogais.total());
}

/**
 * retorna o número de vezes que a vogal 'a' aparece em sequencia
 * @return 
 */
public int totalA(ContadorVogais contadorVogais) {
	return 0;
}
public int totalE() {
    return 0;
}
public int total() {
    return 0;
}

}

5 Respostas

I

Sugiro que voce mude “sequencia” pra uma string ao inves de uma array de strings. Voce pode tambem usar uma array de char (char[]). A dificuldade de validar a array de strings eh que voce nao soh precisa testar se eh uma vogal, mas tambem se o “texto” eh apenas uma letra… Segue dois exemplos:

Primeiro exemplo:

class ContadorVogais {

    private final String[] sequencia;

    public ContadorVogais(String[] sequencia) {
        this.sequencia = sequencia;
    }

    public static void main(String args[]) {
        ContadorVogais contadorVogais = new ContadorVogais(new String[]{"A", "p", "e", "s", "aaa", "r", "d", "e",
                                                                        "v", "o", "c", "e", "a", "m", "a", "n", "h", "a", "h", "a",
                                                                        "d", "e", "s", "e", "r", "o", "u", "t", "r", "o", "d", "i", "a"});



        System.out.println("Total de 'a' : " + contadorVogais.totalA());
        System.out.println("Total de vogais : " + contadorVogais.totalVogais());
    }

    /**
     * retorna o número de vezes que a vogal 'a' aparece em sequencia
     * @return
     */
    public long totalA() {
        return Stream.of(sequencia).filter(e -> "a".equals(e.toLowerCase())).count();
    }
    public long totalVogais() {
        return Stream.of(sequencia).filter(e -> e.toLowerCase().matches("^[aeiou]$")).count();
    }
}

Segundo exemplo:

class Samples {
    private final String sequence;
    public Samples(String sequence) {
        this.sequence = sequence;
    }
    public long countVowels() {
        return sequence.toLowerCase().chars()
              .filter(e -> "aeiou".indexOf((char) e) >= 0)
              .count();
    }
    public static void main(String... args) {
        Samples samples = new Samples("FADKJEI IUEYICUJAGHI DGAUHGhg yw u2789678jhakajdg ");
        System.out.println("Vowels: " + samples.countVowels());
    }
}
A

Legal obrigado pelos esclarecimentos, vi que o primeiro exemplo não analisou o texto com três letras “aaa” considerou apenas uma, mas o exercicio é desse modo mesmo…vou continuar tentando aqui.

I

Sem problema. Quandt a “aaa” nao contar, esse era exatamente meu ponto… “aaa” nao eh uma vogal (eh uma palavra), por isso a sugestao de mudar a implementacao se o que voce quer sao apenas letras. Caso voce queira contar as letras dentro das palavras, a alteracao eh simples:

class ContadorVogais {

    private final String[] sequencia;

    public ContadorVogais(String[] sequencia) {
        this.sequencia = sequencia;
    }

    public static void main(String args[]) {
        ContadorVogais contadorVogais = new ContadorVogais(new String[]{"A", "p", "e", "s", "aaa", "Ar", "d", "e",
                                                                        "v", "o", "c", "e", "a", "m", "a", "n", "h", "a", "h", "a",
                                                                        "d", "e", "s", "e", "r", "o", "u", "t", "r", "o", "d", "i", "a"});



        System.out.println("Total de 'a' : " + contadorVogais.totalA());
        System.out.println("Total de vogais : " + contadorVogais.totalVogais());
    }

    /**
     * retorna o número de vezes que a vogal 'a' aparece em sequencia
     * @return
     */
    public long totalA() {
        return Stream.of(sequencia).flatMap(e -> e.toLowerCase().chars().mapToObj(c -> (char) c)).filter(e -> e.equals('a')).count();
    }
    public long totalVogais() {
        return Stream.of(sequencia).flatMap(e -> e.toLowerCase().chars().mapToObj(c -> (char) c)).filter(e -> "aeiou".indexOf(e) >= 0).count();
    }
}
I

Esqueci de dizer que gostei da referencia ao Chico Buarque :D.

A

Hahaha nem tinha percebido essa referencia… valeu pela ajuda tá funcionando vou agor desbravar para fazer passar no teste de validação do código.

Criado 15 de abril de 2018
Ultima resposta 16 de abr. de 2018
Respostas 5
Participantes 2