Vetor String

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);
	}
}

tu pode fazer o seguinte…

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…)

até mais rapaz!
:wink:

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:

[code]import java.util.HashMap;
import java.util.Iterator;
import javax.swing.JOptionPane;

/*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.
    */
    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
     }
    

    }
    }[/code]

Talvez o código ajude em alguma coisa.

Abraços!

Galera ainda não consegui resolver, se alguem puder dar uma luz…

Chegou a testar o código que postei? Ajudou em alguma coisa? O que faltou ele fazer?

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.

Renato resolveu sim brigadão, consegui aqui valew mesmo.

JhowTroMundo, valeu pela dica …