Guest User

Untitled

a guest
Jan 20th, 2019
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.08 KB | None | 0 0
  1. import java.util.Scanner;
  2.  
  3.  
  4. public class Diccionario {
  5.  
  6. //Estas son variables globales ya que estarían fuera de los métodos. El Main también es un método.
  7. //Al declarar variables fuera de los métodos son variables globales para esta clase.
  8.  
  9. public static int contador = 0;
  10. public static String [] palabras = new String[5];
  11. public static String [] definiciones = new String[5];
  12. public static Scanner sc = new Scanner (System.in);//Scanner importado
  13.  
  14. public static void main(String[] args) {
  15.  
  16. int opcion = 0;
  17. do{
  18. System.out.println("===================================");
  19. System.out.println("1)Listar el diccionario");
  20. System.out.println("2)Añadir una palabra");
  21. System.out.println("3)Eliminar una palabra");
  22. System.out.println("4)Estadísticas");
  23. System.out.println("5)SALIR");//Puedo usar while o for. Pero algo tan simple como mostrar el MENU
  24. //podemos usar un DO WHILE. Si es posible que los datos iniciales sean
  25. //incorrectos mejor un WHILE
  26. System.out.println("Escoja una opción");
  27.  
  28.  
  29.  
  30. opcion = sc.nextInt();//Así le digo que junte lo que escriba el usuario
  31. // y lo transforme en un número. y lo guarda en opción,que
  32. // es una variable. Le asigna como valor lo escrito por el usuario.
  33.  
  34. sc.nextLine(); //Desechamos el resto del buffer. Despues de leer un entero hay que vaciar el buffer.
  35.  
  36. switch (opcion){
  37.  
  38. case 1: listarDiccionario();
  39. break;
  40. case 2: addPalabra();
  41. break;
  42. case 3: borrarPalabra();
  43. break;
  44. case 4: mostrarSubmenuEstadisticas();
  45. break;
  46. case 5: System.out.println("Hasta luego");
  47. break;
  48. default: System.out.println("Escoja una opción entre 1 y 4");
  49. }
  50. }while(opcion != 5);
  51. }
  52.  
  53. //}
  54. //if(opcion == 1){
  55. //listarDiccionario();
  56. //else if(opcion == 2){
  57. //addPalabra();
  58. //}else if(opcion == 3){
  59. //borrarPalabra();
  60. //}else if(opcion == 4){
  61. // mostrarSubmenuEstadisticas();
  62. //}
  63. //}while(opcion != 5);
  64.  
  65. public static void addPalabra(){
  66.  
  67.  
  68.  
  69. System.out.println("===================================");
  70.  
  71. if(contador < palabras.length){//Solo podremos insertar si hay hueco. Contador me dice dónde insertar.
  72.  
  73.  
  74. System.out.println("Introduzca la palabra");
  75. String palabra = sc.nextLine(); //con nextLine obtenemos un strng con lo que
  76. System.out.println("Introduzca la definición");
  77. String definicion = sc.nextLine();
  78.  
  79. palabras[contador] = palabra;
  80.  
  81.  
  82. definiciones[contador] = definicion;
  83. contador++;
  84. }else{
  85. System.out.println("El diccionario está lleno");
  86. }
  87. }
  88.  
  89. public static void listarDiccionario(){
  90.  
  91. for(int a=0; a<contador; a++){ //Si lo quiero recorrer entero sin saber el tamaño del array uso length
  92.  
  93. String palabra = palabras[a];
  94. String definicion = definiciones[a];
  95. System.out.println(palabra+": "+definicion);
  96.  
  97. //o también
  98. //System.out.println(palabras[a]+": "+definiciones[a]);
  99. }
  100. }
  101. //public static void borrarPalabra(){//Le pedimos que escriba la palabra a borrar y averiguamos si son iguales
  102.  
  103. //System.out.println("============================================");
  104.  
  105. //System.out.println("Introduzca la palabra a borrar:");
  106. //String palabra = sc.nextLine();
  107.  
  108. //Primero buscamos en qué posición se encuentra la palabra
  109. //int a=0;
  110. //for (a=0; a<contador; a++){//Desde la posición a=0 hasta contador.
  111.  
  112. //if(palabra.equalsIgnoreCase( palabras[a] )){
  113. //break;
  114. //}
  115. //}
  116. //Y luego nos traemos todos los elementos una posición hacia atrás y dejar el hueco al final.
  117. //Si le resto 1 al contador me ahorro poner -1
  118.  
  119. //contador--;
  120. //for (int b=a; b<contador; b++){
  121. //palabras[b] =palabras[b+1];
  122. //definiciones[b]=definiciones[b+1];
  123. //}
  124. //palabras[contador] = null;
  125. //definiciones[contador] = null;
  126.  
  127. //}
  128.  
  129.  
  130. public static void borrarPalabra(){
  131. System.out.println("===================================");
  132. System.out.println("Introduzca la palabra a borrar:");
  133. String palabra = sc.nextLine();
  134.  
  135. //Primero buscamos en que posición se encuentra la palabra
  136. int a=0;
  137. for(a=0; a<contador; a++){
  138. if(palabra.equalsIgnoreCase( palabras[a] )){
  139. break;
  140. }
  141. }
  142.  
  143. if( a != contador ) {
  144. //Y luego nos traemos todos los elementos una posición hacia atras
  145. contador--;
  146. for(int b=a; b<contador; b++){
  147. palabras[b] = palabras[b+1];
  148. definiciones[b] = definiciones[b+1];
  149. }
  150. palabras[contador] = null;
  151. definiciones[contador] = null;
  152. } else {
  153. System.out.println("La palabra no existe en le diccionario.");
  154. }
  155.  
  156. }
  157. public static void mostrarSubmenuEstadisticas(){
  158.  
  159. int opcion = 0;
  160. do{
  161. System.out.println("=================================================");
  162. System.out.println("ESTADÍSTICAS");
  163. System.out.println("1) Encontrar la palabra más corta del diccionario");
  164. System.out.println("2) Encontrar la palabra más larga del diccionario");
  165. System.out.println("3) Distribución de longitudes");
  166. System.out.println("4) Volver");
  167.  
  168. opcion = sc.nextInt();
  169. sc.nextLine(); //Para eliminar el 'enter'
  170.  
  171. switch (opcion){
  172.  
  173. case 1: encontrarPalabraMasCorta();
  174. break;
  175. case 2: encontrarPalabraMaslarga();
  176. break;
  177. case 3: distribucionLongitudes();
  178. break;
  179. case 4: break;
  180. default: System.out.println("Como estamos....");
  181. }
  182.  
  183. }while(opcion!=4);
  184. }
  185.  
  186. public static void encontrarPalabraMasCorta(){
  187.  
  188. //String txt = "Bo que pasa";
  189. //int longitud = txt.length(); //para averiguar la longitud de un string.
  190.  
  191.  
  192. int posicionMasCorta = 0;
  193. int longitudMasCorta = Integer.MAX_VALUE;//Declaro estas variables para que almacene la palabra
  194. //más corta que vaya encontrando
  195.  
  196. for(int a=0; a<contador; a++){
  197. String palabra = palabras[a];//Cojo cada palabra de 1 en 1 y veo su longitud.
  198. int longitud = palabra.length();//Qué posición ocupa la palabra más corta hasta el momento.
  199. //Necesito almacenar la posición y la longitud de la más corta que
  200. //vaya encontrando
  201.  
  202. if(longitud<longitudMasCorta){
  203. //Ahora voy a comparar con la siguiente
  204. longitudMasCorta = longitud; //Si es menor, longitud de la nueva sera menor que longmascorta
  205. posicionMasCorta = a; //Y la posición de la nueva palabra será la de la anterior que tenía.
  206.  
  207. }
  208.  
  209. }
  210. System.out.println("=================================================");
  211. System.out.println("Palabra más corta del diccionario:");
  212. System.out.println(palabras[posicionMasCorta]+". Longitud:"+longitudMasCorta);
  213.  
  214.  
  215. }
  216.  
  217.  
  218. public static void encontrarPalabraMaslarga(){
  219.  
  220. int posicionMasLarga = 0;
  221. int longitudMasLarga = 0;
  222.  
  223. for(int a=0; a<contador; a++){
  224. String palabra = palabras[a];
  225. int longitud = palabra.length();
  226.  
  227. if(longitud>longitudMasLarga){
  228. posicionMasLarga = a;
  229. longitudMasLarga = longitud;
  230. }
  231. }
  232. System.out.println("========================================================================");
  233. System.out.println("Palabra más larga del diccionario:");
  234. System.out.println(palabras[posicionMasLarga]+". Longitud:"+longitudMasLarga);
  235. }
  236.  
  237. public static void distribucionLongitudes(){//Cuando declaras un array tienes todo ceros.
  238.  
  239. int [] distribucion = new int[20];
  240.  
  241. for (int a=0; a<contador; a++){
  242.  
  243.  
  244. String palabra = palabras[a];
  245. int longitud = palabra.length();
  246.  
  247.  
  248. distribucion[longitud-1] = distribucion[longitud-1]+1;
  249.  
  250. }
  251.  
  252. for(int a=0; a<20; a++){
  253. System.out.println("Palabras de longitud "+(a+1)+": "+distribucion[a]);
  254.  
  255. }
  256. }
  257.  
  258. }
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266. //Cuando borro una palabra queda un hueco y puedo recorrer el array buscando ese hueco.
  267. //Con el contador voy directo al hueco y cuando borro se desplaza todo a la izquierda.
  268. //Si mi aplicación lo que hace es añadir sobre todo y borrar a veces, me conviene el contador.
  269. //No me conviene el contador, si mi aplicación inserta y borra continuamente. Usamos el contador para
  270. //saber en qué posición hay que insertar.
Add Comment
Please, Sign In to add comment