Vetor String

7 respostas
rogeriovaladaoti

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

7 Respostas

tucano

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:

renato.marquez

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:

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

Talvez o código ajude em alguma coisa.

Abraços!

rogeriovaladaoti

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

renato.marquez

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

JhowTroMundo

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.

rogeriovaladaoti

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

rogeriovaladaoti

JhowTroMundo, valeu pela dica …

Criado 20 de maio de 2011
Ultima resposta 24 de mai. de 2011
Respostas 7
Participantes 4