YO SE QUE AQUI ME VAN AYUDAR JEJE YA TRATEEE MUCHO PARA HACER ESTE PROGRAMA Y NO ME SALEEE QUIEN ME AYUDA PORFAAA SI NOES MUCHA MOLESTIAAA.....
PROGRAMA QUE CUENTE LAS PALABRAS COMPLETAS DENTRO DE UNA FRASE Y LOS MUESTRE EN MAYUSCULAS.
EJEMPLO
EL JUEVES ES EL EXAMEN.
EL=2
JUEVES=1
EXAMEN=2
ES=1 ;D
Cuando tienes la instancia de la clase String puedes usar el metodo toUpperCase() que retorna el String en mayusculas, para contar las palabras por espacios puedes usar el metodo split de la clase String asi:
String[] palabras=cadena_original.split(" ");
int cantidad_palabras = palabras.length;
Saludos
Lees la frase completa. Le aplicas toUpperCase(), la separas por espacios y entonces recorres el array que te devuelve la función split(). Te creas un mapa, tendrás clave Strings y valores enteros, osea, int. Entonces cuando empiezas a recorrer el array que habías dividido al principio por espacios, si la palabra que tienes en la posición i no está contenido en el mapa entonces añades al mapa esa entrada, si por el contrario está incrementas en una unidad el valor.
Cuando has recorrido todo el array entonces recorres el mapa y muestras por cada clave su valor.
Sería una posible solución pero como poder puedes hacerlo de mil formas.
Saludos.
hey amigo valkyrr aque te refieres en crear un mapa... no entendiii... jejeje
http://download.oracle.com/javase/6/docs/api/java/util/HashMap.html
A eso me refiero xD
Cita de: DomInYK en 18 Junio 2011, 19:34 PM
hey amigo valkyrr aque te refieres en crear un mapa... no entendiii... jejeje
Se refiere a ir instanciando todos los valores, en tu caso, palabras en un vector, array, hasmap, dictionary....
Para luego poder entregarlo, contarlo o tratar el resultado.
Saludos
a modo de colaborar lo realize este programa talves no de la forma adecuada pero funciona aunque falta
me dan sus sugerencias de como mejorar este codigo!!!!!!! porfa saludos
ahora ya funciona...
public String contarPalabras2(String palabras ){
StringTokenizer toke = new StringTokenizer(palabras);
String muestra = "";
String dato = "";
String res = "";
int cont=0;
ArrayList<String> array = new ArrayList<String>();
ArrayList<String> copia = new ArrayList<String>();
while(toke.hasMoreTokens()){
array.add(toke.nextToken(" "));
}
for(int z=0; z<=array.size()-1 ; z++){
copia.add(array.get(z));
}
for(int a=0; a<=array.size()-1 ; a++){
muestra=array.get(a);
for(int b=a+1 ; b<=array.size()-1 ; b++){
if(muestra.equals(array.get(b))){
array.remove(b);
}
}
}
//doble recorrido por un error ejemplo hola hola como estas hola hola
for(int a=0; a<=array.size()-1 ; a++){
muestra=array.get(a);
for(int b=a+1 ; b<=array.size()-1 ; b++){
if(muestra.equals(array.get(b))){
array.remove(b);
}
}
}
for(int p=0; p<=array.size()-1 ; p++){
dato=array.get(p);
for(int q=0 ; q<=copia.size()-1 ; q++){
if(dato.equals(copia.get(q))){
cont++;
}
}
res=res+dato+" "+cont+" ";
cont=0;
}
return res;
}
public String concatenar(String palabras){
palabras=contarPalabras2(palabras);
StringTokenizer adaptador= new StringTokenizer(palabras);
ArrayList<String> arreglo= new ArrayList<String>();
ArrayList<String> copia= new ArrayList<String>();
String respuesta=" ";
while(adaptador.hasMoreTokens()){
arreglo.add(adaptador.nextToken(" "));
}
for(int a=0; a<=arreglo.size()-1; a++){
copia.add(arreglo.get(a));
if(a%2==0){
copia.add("=");
}
else{
copia.add(" ");
}
}
for(int b=0;b<=copia.size()-1; b++){
respuesta=respuesta+ copia.get(b);
}
System.out.println(respuesta);
return respuesta;
}
}
Yo suponiendo que cada palabra esté separada por un espacio haría lo siguiente:
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] palabras = br.readLine().split(" ");
HashMap<String, Integer> resultados = new HashMap<String, Integer>();
for(int i = 0; i < palabras.length; i++){
if(resultados.containsKey(palabras[i])){
int aux = resultados.get(palabras[i]);
aux++;
resultados.put(palabras[i], aux);
}
else{
resultados.put(palabras[i], 1);
}
}
Set<String> keys = resultados.keySet();
for (String string : keys) {
System.out.println(string.toUpperCase() + ": " + resultados.get(string));
}
}
haría uso de un mapa que viene para el caso bastante bien.
Saludos.