Galera não to conseguindo responder a letra d, alguem tiver uma ideia ai, consegui fazer as letras a,b,c usando letra por letra .
segue o codigo.
/*Fazer um Algoritimo que:
* a) leia uma frase de 80 caracteres, incluindo brancos;
* b) conte quantos brancos existem na frase;
* c) conte quantas vezes a letra A aparece;
* d) conte quantas vezes ocorre um mesmo par de letras na frase e quais são elas;
* e) imprima o que foi calculado nos itens b,c e d.
*/
import javax.swing.JOptionPane;
public class Ex2_5_1_2 {
public static void main(String[] args) {
String vetor[] = new String[4];
int contBranco = 0, contA = 0;
for(int i = 0; i <= 3; i++){
vetor[i] = JOptionPane.showInputDialog("Digite uma frase com uma Letra de cada vez: ");
if (vetor[i].equals(""))
contBranco++;
if (vetor[i].equals("a")){
contA++;
}
}
System.out.println("Qt de branco: " + contBranco);
System.out.println("Qt de ( A ): " + contA);
}
}
usar um ArrayList, vai adicionando cada par de letras (a posição atual mais a posição posterior…). Aqui se tem todos os pares de letras que o exercicio pede…
depois analisa o que tu tem na listagem obtida e contando as ocorrencias…
… é uma forma bem simples (fraquinha, mas simples…)
Bom, não sei até que ponto você pode usar a API do Java para resolver o problema, mas se eu tivesse que solucionar esse exercício, faria da seguinte forma:
a) leia uma frase de 80 caracteres, incluindo brancos;
b) conte quantos brancos existem na frase;
c) conte quantas vezes a letra A aparece;
d) conte quantas vezes ocorre um mesmo par de letras na frase e quais são elas;
e) imprima o que foi calculado nos itens b,c e d.
*/
public class Ex2_5_1_2 {
public static void main(String[] args) {
//Lê a frase inserida pelo usuário… Daria para fazer lendo letra a letra
String frase = “”;
do {
frase = JOptionPane.showInputDialog(“Digite uma frase de até 80 caracteres”);
} while (frase == null || frase.isEmpty() || frase.length() > 80);
char[] arrayDeCaracteres = frase.toCharArray(); //Armazena todos os caracteres digitados em forma de array
HashMap<String, Integer> paresDeLetras = new HashMap<String, Integer>(); //Cria um mapa que irá armazenar, para cada letra repetida, a sua frequência
int quantidadeDeEspacosEmBranco = 0; //Inteiro que armazena a quantidade de espaços em branco
int quantidadeDeLetrasA = 0; //Inteiro que armazena a quantidade de letras A
for (int i = 0; i < arrayDeCaracteres.length; i++) { //Varre todos caracteres do array
if (arrayDeCaracteres[i] == 'A') { //Se for a letra maiúscula A, então incrementa o inteiro que conta a sua quantidade
quantidadeDeLetrasA++;
} else if (arrayDeCaracteres[i] == ' ') { //Se for um espaço em branco, incrementa em 1 a quantidade de espaços em branco
quantidadeDeEspacosEmBranco++;
}
if (i > 0 && arrayDeCaracteres[i] == arrayDeCaracteres[i - 1]) { //Se a letra atual for igual a anterior (por isso i > 0, pois em i = 0 não existe letra anterior), então realiza o código abaixo
Integer valorAntigo = paresDeLetras.get(String.valueOf(arrayDeCaracteres[i])); //Recupera a frequência da letra encontrada
if (valorAntigo == null) { //Se for a primeira vez que ela foi encontrada, ou seja, se o objeto for nulo, então cria um novo inteiro contabilizado como 1
paresDeLetras.put(String.valueOf(arrayDeCaracteres[i]), new Integer(1));
} else { //Caso contrário, pega o valor anterior e incrementa
paresDeLetras.put(String.valueOf(arrayDeCaracteres[i]), ++valorAntigo);
}
}
}
System.out.println("Espaços em Branco: " + quantidadeDeEspacosEmBranco); //Exibe quantidade de espaços em branco
System.out.println("Letras A: " + quantidadeDeLetrasA); //Exibe quantidade de letras A
System.out.println("--------Casos de Pares--------");
Iterator<String> it = paresDeLetras.keySet().iterator(); //Recupera todas as letras repetidas encontradas
while (it.hasNext()) { //Varre todas as letras através de um Iterator
String letra = it.next(); //Recupera o valor atual do Iterator
System.out.println("Letra: " + letra + "; Frequência: " + paresDeLetras.get(letra) + " vez(es)"); //Exibe a letra repetida e sua frequência de repetição na frase
}
Cara, não sei se eu to enxergando mal ou se vc esqueceu de colocar um espaço entre as aspas. Tem que ser " " ao invés de “”. Uma String vazia é diferente de uma String com um espaço.
Confere ai.
Edit - Realmente vc esqueceu (colei no notepad aqui).
Arruma que deve funcionar.
Voce poderia usar uma String e ir pelo .getCharAt(i).equals(‘char’) também, assim se livraria do array e da restrição de digitar um caracter por vez.