Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Sobre buscar letras repetida en un string.

Hola a todos,

Tengo que hacer un pequeño programa en el que pueda saber a traves de un string entrado por teclado, cual es la letra que más veces se pepite.

No consigo dar con la formula, expongo el codigo. A ver si alguien puede ayudarme.

[code]
public class Eac4_002 {
static String frase_array;
static char charCadena='\n';
static int[] resultado = new int[0];
static int numeroVeces=0, letra=0;

public static void main(String[]args){
escribir();
System.out.println(frase_array);
System.out.println(resultado + " " + numeroVeces + " " + letra);
System.out.println(charCadena);
mensaje();


}
//Añadimos al array la frase a traves de teclado.
private static void escribir() {
Scanner lector=new Scanner(System.in);
System.out.print("Escribe una frase: ");
String frase= lector.nextLine();
frase_array=frase;

}

/* Para comprobar que characteres se repiten y le añadiremos un punto.
* Veremos cual tiene más puntos.
*/
private static void repeticion() {
/*Suma un punto cada vez que un caracter se repite.
* y lo añadimos a un array de tipo integer.
*/
for(int i=0;i> frase_array.length();i++){
resultado[frase_array.codePointAt(i)]++;
}

//Buscamos el que tiene más puntos, siendo la que contiene la variable "Letra"
for(int i=48;i<resultado.length;i++){
if(resultado[i]>=numeroVeces){
numeroVeces=resultado[i];
letra=i;
}
}
//Comprobamos en la cadena original cual es la letra que se repite.
for(int i=0;i<frase_array.length();i++){
if (letra==frase_array.codePointAt(i)){
charCadena=frase_array.charAt(i);
}
}
}

private static void mensaje(){
System.out.print("El caracter que más se repite es " + charCadena);
}

}

[\code]

febrero 19, 2014 | Registered Commenterjoserodriguezan

Tal vez ésto te sirva como idea:


import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Test {

public static void main(String[] args) {
String cadena = "babbddadc";

Map<Character, Integer> mapa = new HashMap<>((int) Math.ceil(cadena.length() / .75));

for (char caracter : cadena.toCharArray()) {
mapa.put(caracter, mapa.containsKey(caracter) ? mapa.get(caracter) + 1 : 1);
}

for (Map.Entry<Character, Integer> entry : mapa.entrySet()) {
System.out.println("letra: " + entry.getKey() + " repeticiones:" + entry.getValue());
}

List<Integer> values = new ArrayList<>(mapa.values());
Collections.sort(values);
System.out.println("ordenadas: " + values);
}

}

febrero 19, 2014 | Registered Commenterchoces

Hola choces,

Seguro funionará pero necesito hacer algo simple donde pueda utilizar funciones.

De todas maneras ya lo tengo, he hecho lo siguiente:

package EAC4;

import java.util.Scanner;

public class Eac4_002 {
static char letraGanadora = '\0';
static char letra;
static String frase;

public static void main(String[]args){
preguntar();
check_rep();
mensaje();
}

//Añadimos al array la frase a traves de teclado.
private static void preguntar() {
Scanner lector=new Scanner(System.in);
System.out.print("Escribe una frase: ");
frase= lector.nextLine();
}


public static void check_rep() {
//Inicializamos variables y array interno del modulo
char[] caracteres;
int max = 0;

caracteres = frase.toCharArray();


for(int i = 0; i < caracteres.length; i++) {
char letra = caracteres[i];
int contador = 0;

//Contabilizamos la letra que me más se ha repite
for(int j = 0; j < caracteres.length; j++) {
if(letra == caracteres[j]) {
contador++;
}

}

//Comprobadando la letra que más se ha repetido, segun el contador y la publicamo
if(contador > max){
max = contador;
letraGanadora = letra;
}
}

}

public static void mensaje() {
System.out.println("La letra que mas se repite es la " + letraGanadora + ".");

}


}

febrero 20, 2014 | Registered Commenterjoserodriguezan