Foros del Web » Programación para mayores de 30 ;) » Java »

Buscar caracteres

Estas en el tema de Buscar caracteres en el foro de Java en Foros del Web. Hola tengo un gran problema y me gustaria que me ayudaran a resolverlo el problema es el siguiente: escriba una aplicacion que reciba como entrada ...
  #1 (permalink)  
Antiguo 05/03/2011, 14:44
 
Fecha de Ingreso: enero-2011
Ubicación: Venezuela, Táchira
Mensajes: 96
Antigüedad: 13 años, 3 meses
Puntos: 10
Buscar caracteres

Hola tengo un gran problema y me gustaria que me ayudaran a resolverlo el problema es el siguiente:

escriba una aplicacion que reciba como entrada varias lineas de texto y utilice el metodo indexOf de la clase String para determinar el numero total de ocurrencias de cada letra del alfabeto en ese texto, las letras mayusculas y minusculas deben contarse como 1 sola. almacene los totales para cada letra en un arreglo e imprima los valores en formato tabular despues de que se hayan dterminado los totales.

tengo este metodo :
Código Java:
Ver original
  1. public void concurrencia(String cadena){
  2.         int contador = 0;
  3.         String cantidad = "";
  4.         String aux = "";
  5.  
  6.         for (int i=0; i < cadena.length(); i++) {
  7.             if (cadena.charAt(i) != ' ')
  8.                 aux += cadena.charAt(i);
  9.         }      
  10.         int cuenta[] = new int[aux.length()];
  11.  
  12.         for(int i=0; i<aux.length(); i++)
  13.             cuenta[i]=0;
  14.  
  15.         int k=0;
  16.         for(int i=0; i<aux.length(); i++){
  17.             for(int j=i+1; j<aux.length(); j++){
  18.                 if(aux.charAt(i) == aux.charAt(j)){
  19.                     cuenta[aux.indexOf(aux.charAt(i))]++;
  20.                 }
  21.             }
  22.         }
  23.  
  24.  
  25.         salida.append("RESULTADOS\n"+"Cadena\tVeces\n");
  26.  
  27.         for(int i=0; i<aux.length(); i++){
  28.             cantidad += aux.charAt(i) + "\t" + cuenta[i] + "\n";
  29.         }
  30.  
  31.         salida.append(cantidad);
  32.  
  33.     }

y esta es la salida que me da:

Código:
RESULTADOS
Cadena	Veces
e	3
p	0
a	1
a	0
l	1
e	0
e	0
l	0

por faavor necesito ayuda no es ninguna tarea soy yo estudiando metodos de la clase string de un libro y ponen ese ejercicio.. me gustaria que me ayudaran y si no fuera mucha molesta me explicaran los pasos necesarios para resolverlo

de ante mano gracias!
  #2 (permalink)  
Antiguo 09/03/2011, 13:17
Avatar de sivadmp  
Fecha de Ingreso: febrero-2011
Ubicación: La Paz - Bolivia
Mensajes: 293
Antigüedad: 13 años, 2 meses
Puntos: 20
Respuesta: Buscar caracteres

hola

puedes hacer esto, primeramente convertir tu cadena ya sea a pura minusculas o pura mayusculas, para que no se distingan la mayuscula con la minuscula

como ya lo tienes en minusculas digamos, puedes ordenar la cadena mediante sus caracteres
por ejemplo la cadena es "SAludos" la nueva cadena ordenada y en minusculas seria "adlossu", y de esta forma crear un contador , que va a ir contando la cantidad de caracteres

saludos
  #3 (permalink)  
Antiguo 09/03/2011, 19:26
 
Fecha de Ingreso: enero-2011
Ubicación: Venezuela, Táchira
Mensajes: 96
Antigüedad: 13 años, 3 meses
Puntos: 10
Respuesta: Buscar caracteres

Cita:
Iniciado por sivadmp Ver Mensaje
hola

puedes hacer esto, primeramente convertir tu cadena ya sea a pura minusculas o pura mayusculas, para que no se distingan la mayuscula con la minuscula

como ya lo tienes en minusculas digamos, puedes ordenar la cadena mediante sus caracteres
por ejemplo la cadena es "SAludos" la nueva cadena ordenada y en minusculas seria "adlossu", y de esta forma crear un contador , que va a ir contando la cantidad de caracteres

saludos
gracias x responder... pero debo contar solo las vocales de ese texto y no se como hacer eso =/
  #4 (permalink)  
Antiguo 10/03/2011, 07:16
 
Fecha de Ingreso: noviembre-2008
Mensajes: 59
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: Buscar caracteres

Con un if sería
Código:
if(char=='a'||char=='e'||char=='i'||char=='o'||char=='u'){
contador[char]++;
}
  #5 (permalink)  
Antiguo 12/03/2011, 10:59
 
Fecha de Ingreso: enero-2011
Ubicación: Venezuela, Táchira
Mensajes: 96
Antigüedad: 13 años, 3 meses
Puntos: 10
Respuesta: Buscar caracteres

Cita:
Iniciado por napartar Ver Mensaje
Con un if sería
Código:
if(char=='a'||char=='e'||char=='i'||char=='o'||char=='u'){
contador[char]++;
}
hola gracias x responder pero me equivoque no son solo las vocales , debo contar cuanto aparece cada letra del alfabeto en ese texto

osea asi
Código:
Cadena:    Veces que se encuentra en el texto:
h                      1
o                      1
l                       1
a                      2
a                      2
algo asi por favor ayudenme kiero seguir haciendo ejercicios pero kisiera terminar ese primero... en el enunciado dice que con el metodo indexOf pero no entiendo como hacerlo usando ese metodo :/
  #6 (permalink)  
Antiguo 12/03/2011, 12:31
 
Fecha de Ingreso: noviembre-2008
Mensajes: 59
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: Buscar caracteres

Creo que lo que deberías hacer (para usar el indexOf) es:

1- Crear un String vacío "aux".

2- Crear un array de int del tamaño de num de letras del alfabeto int cont[28]. NO OLVIDES INICIALIZARLO CON 0 EN TODAS LAS POSICIONES.

3- Recorrer la cadena a analizar. Al encontrarte con el siguiente carácter haces:

Código:
//Pasar el String de un único char a minúsculas
String charActual = charActual.toLowerCase();
//Obtener el índice del char en el String auxiliar, si existe incrementaremos el //contador correspondiente
int indice = aux.indexOf(charActual);
if (indice != -1)//Aun no hemos leído ese caracter
   aux += carActual.toLowerCase();
else
   cont[indice]++;
Iterando esto para todo el String a analizar tenemos un String con el buffer "aux" y otro con las apariciones correspondientes. Ahora simplemente recorre la cadena original y para cada letra busca su índice correspondiente, y obtén el número de apariciones del array contador.

Un saludo.

Etiquetas: caracteres
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:53.