+ 4

Necesito ayuda para explicar mi código en comentarios al español...

import java.util.*; class Main { public static void main(String args[] ) throws Exception { Scanner s = new Scanner(System.in); int n = s.nextInt(); HashMap hm = new HashMap(n); for(int i=0;i<=n;i++){ String t = s.nextLine(); if (t.equals("")) continue; String[] names = t.split(" "); String country = names[0]; String woman_name = getWomanName(names); if(hm.containsKey(country)) { data d = (data)hm.get(country); if(!d.names.contains(woman_name)) { d.names.add(woman_name); d.count++; hm.remove(country); hm.put(country,d); } } else { data d1 = new data(); d1.names.add(woman_name); d1.count++; hm.put(country,d1); } } String[] keys = (String[]) hm.keySet().toArray(new String[0]); Arrays.sort(keys); for(String key:keys) { int count = ((data)hm.get(key)).count; System.out.println(key+" "+count); } } static String getWomanName(String[] names) { String n = ""; for(int i=1;i<names.length;i++) n = n+ names[i]+" "; n = n.trim(); return n; } } class data { ArrayList<String> names = new ArrayList(5); int count=0; }

2nd Apr 2018, 7:58 PM
Miguel Benjamin Zubieta Rios
Miguel Benjamin Zubieta Rios - avatar
3 Answers
+ 1
Lo primero que se ve es la declaracion de una variable de tipo Scanner, la cual permite obtener input del teclado por parte del usuario, la declaracion de una variable de tipo HashMap para tener la funcionalidad de relacionar un valor con una llave o identificador (key/value pair), despues entra a un loop for, el cual maneja los inputs, y los almacena un un array de tipo string separados por un espacio, y luego llama al metodo "getWomanName", y dentro del loop esta el condicional de ver si la variable HashMap contiene una llave "country", y si es asi entonces se la agrega a la variable "woman_name", sino entonces crea una variable con ese algun valor country para agregarlo, saliendo del bucle for se declara una variable de tipo String Array la cual crear un key basado en la variable HashMap, la cual luego es organizada con el metodo "sort" alfabeticamente, luego se recorre ese mismo array para imprimir cada valor de la variable "key" junto a un conteo, y asi termina el metoo main. El metodo estatico que retorna Strings "getWomanName" basicamente toma como parametro un array de tipo string, el cual utiliza para ir retornando los strings del array que se le pasa como parametro quitandole cualquier espacio que pudieran tener los nombres utilizados con "trim()". La clase "data" solo declara una lista de tipo String dandole un espacio inicial de 5, y un contador. Honestamente no corri el programa, no se si funciona o si me falto algo por mencionar, pero viendo el codigo entiendo que esto junto a lo que tengas te debe servir para preparar tu exposicion. Suerte Miguel.
5th Apr 2018, 1:00 PM
Roberto Guisarre
Roberto Guisarre - avatar
+ 1
Hola, muchas gracias por la ayuda Roberto. Siento que hay muy pocas personas en la plataforma de habla hispana...
5th Apr 2018, 4:39 PM
Miguel Benjamin Zubieta Rios
Miguel Benjamin Zubieta Rios - avatar
0
pueden ayudarme con algo?
10th Mar 2019, 3:50 AM
José Cabrera
José Cabrera - avatar