Guest User

Untitled

a guest
Jun 24th, 2018
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.16 KB | None | 0 0
  1. package ejercicios;
  2. import java.util.Random;
  3. import java.util.ArrayList;
  4. import java.util.Arrays;
  5. import java.util.Collections;
  6. import java.util.HashMap;
  7. import java.util.Map.Entry;
  8.  
  9. public class RandWords{
  10. private static String genPalabra(){
  11. Random gen = new Random();
  12. //la palabra más larga en español [dicen en internerd] tiene 27 letras
  13. byte[] bytes = new byte[gen.nextInt(27)];
  14. //llenar el arreglo con bytes aleatorios
  15. //gen.nextBytes(bytes);
  16.  
  17. for(int i = 0; i< bytes.length; i++){
  18. //el byte tiene que estar en el rango [97,122] (letras minúsculas)
  19. //para generar aleatorios en un rango: (fin - inicio +1) * gen.nextDouble() + inicio;
  20. bytes[i] = (byte) (26 * gen.nextDouble() + 97);
  21. }
  22.  
  23. return new String(bytes);
  24. }
  25.  
  26. public static void main(String [] args){
  27. //instanciar el generador de aleatorios
  28. Random gen = new Random();
  29. //obtener el número de palabras de la línea de comandos:
  30. int numPalabras = args.length == 1 ? Integer.parseInt(args[0]) : gen.nextInt(20);
  31.  
  32. //guardar las palabras en un ArrayList:
  33. ArrayList<String> palabras = new ArrayList<String>();
  34.  
  35. //llenar el arrayList con n palabras al azar:
  36. for(int i=0; i<numPalabras; i++){
  37. palabras.add(genPalabra());
  38. }
  39.  
  40. HashMap<Integer, ArrayList<String>> diccionario = new HashMap<Integer, ArrayList<String>>();
  41. for(String palabra : palabras){
  42. if(!diccionario.containsKey(palabra.length())){
  43. String[] placeholder = {palabra};
  44. diccionario.put(palabra.length(), new ArrayList<String>(Arrays.asList(placeholder)));
  45. }else{
  46. diccionario.get(palabra.length()).add(palabra);
  47. }
  48. }
  49.  
  50. //ordenarlas
  51. for(ArrayList<String> valor : diccionario.values()){
  52. Collections.sort(valor);
  53. }
  54.  
  55. //imprimirlas
  56. for(Entry entrada: diccionario.entrySet()){
  57. System.out.printf("Las palabras con longitud %d: %s \n", entrada.getKey(), entrada.getValue().toString());
  58. }
  59.  
  60. }
  61. }
Add Comment
Please, Sign In to add comment