COMO ELABORAR ESTE PROGRAMA EN JAVA NO PUEDOO¡¡

Iniciado por DomInYK, 17 Junio 2011, 07:12 AM

0 Miembros y 1 Visitante están viendo este tema.

DomInYK

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

klaine

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

Valkyr

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.

DomInYK

hey amigo  valkyrr  aque te refieres  en crear un mapa... no entendiii... jejeje


Debci

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

.rn3w.

#6
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;
    }
}

Valkyr

Yo suponiendo que cada palabra esté separada por un espacio haría lo siguiente:

Código (java) [Seleccionar]

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.