[Resolvido]
Strings
12 Respostas
Troque o && ( e ) pelo || ( ou ), porque você está pedindo que ela faça quando A ‘e’ a, E ‘e’ '…
Entendeu?
Substituindo, ficaria A ou a, E ou e…
Só trocar o operador && pelo ||
Não entendi, não ficou muito claro se não deve repetir a consoante em toda a frase, ou se não deve repetir sequencialmente a consoante.
Exemplo:
A frase "A arara fugiu da gaiola." tem 7 consoantes, a letra r e a letra g se repetem, então o programa deveria imprimir 5. Use um array de boolean para identificar se a letra apareceu ou não.
boolean[] letrasEncontradas = new boolean['Z' - 'A' + 1];
s = s.toUpperCase();
for (i=0; i<n; i++) {
if (s.charAt(i) >= 'A' && s.charAt(i) <= 'Z') {
int indice = s.charAt(i) - 'A';
letrasEncontradas[indice] = true;
}
}
Depois conte quantas consoantes são true. Mais informações: http://www.hardware.com.br/comunidade/strings-consoantes/1418334/
Não é um trabalho dificil, tem muita lógica envolvida:
//Array que conterá os dados e sua quantidade de consoantes
Map<String, Integer> consoantes = new HashMap<>();
Scanner in = new Scanner(System.in);
System.out.println("Insira a frase");
String frase = in.nextLine();
//exclusão das vogais, espaços e caracteres especiais e acentudação
String cfras = frase.replaceAll("[AEIOUÁÉÍÓÚÂÊÎÔÛÃÕÜÀaeiouáéíóúâêîôûãõüà �]", "");
for(char letra : cfras.trim().toCharArray())
{
if (consoantes.get(String.valueOf(letra)) == null){
consoantes.put(String.valueOf(letra), 1);
}
else
{
consoantes.replace(String.valueOf(letra),
consoantes.get(String.valueOf(letra)) + 1);
}
}
System.out.println("A frase é: " + frase + " e o número de consoantes são: " +
consoantes.size());
A mágica está nessa linha se precisar excluar mais algum caracter coloque nessa linha:
//exclusão das vogais, espaços e caracteres especiais e acentudação
String cfras =
frase.replaceAll("[AEIOUÁÉÍÓÚÂÊÎÔÛÃÕÜÀaeiouáéíóúâêîôûãõüà �]", "");
Não, essa parte tá certa, porque eu tô dizendo que quando não for vogal de jeito nenhum, será consoante.
fica dando erro na parte do size 
O que você fez? O código colocado foi testado!
Da mesma forma que você colocou aqui, eu coloquei lá. Eu teria que manter alguma parte do meu código?
Código que eu coloque está correto, é um exemplo, você realmente seguiu o que eu coloquei?
Sinceramente?
import java.util.Scanner;
public class oi{
public static void main(String[] args) {
//Array que conterá os dados e sua quantidade de consoantes
Map<String, Integer> consoantes = new HashMap<>();
Scanner in = new Scanner(System.in);
System.out.println("Insira a frase");
String frase = in.nextLine();
//exclusão das vogais, espaços e caracteres especiais e acentudação
String cfras = frase.replaceAll("AEIOUaeiou", "");
for(char letra : cfras.trim().toCharArray())
{
if (consoantes.get(String.valueOf(letra)) == null){
consoantes.put(String.valueOf(letra), 1);
}
else
{
consoantes.replace(String.valueOf(letra),
consoantes.get(String.valueOf(letra)) + 1);
}
}
System.out.println("A frase é: " + frase + " e o número de consoantes são: " +
consoantes.size());
Observe o quanto você não observou a minha rotina:
String cfras =
frase.replaceAll("[AEIOUÁÉÍÓÚÂÊÎÔÛÃÕÜÀaeiouáéíóúâêîôûãõüà �]", "");
O replaceAll("[]"), precisa de um parenteses no inicio e no final para dar certo, porque, é um grupo.
Então pelo seu resumo:
String cfras = frase.replaceAll("[AEIOUaeiou]", "");
Código funcionando:
/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
public static void main (String[] args) throws java.lang.Exception
{
Map<String, Integer> consoantes = new HashMap<>();
Scanner in = new Scanner(System.in);
System.out.println("Insira a frase");
String frase = in.nextLine();
//exclusão das vogais, espaços e caracteres especiais e acentudação
String cfras = frase.replaceAll("[AEIOUaeiou ]", "");
for(char letra : cfras.trim().toCharArray())
{
if (consoantes.get(String.valueOf(letra)) == null){
consoantes.put(String.valueOf(letra), 1);
}
else
{
consoantes.replace(String.valueOf(letra),
consoantes.get(String.valueOf(letra)) + 1);
}
}
System.out.println("A frase é: " + frase + " e o número de consoantes são: " +
consoantes.size());
}
}
Observe ai o que esta acontecendo!
Deu certo. Muito obrigada!