public
Created

  • Download Gist
Histograma.java
Java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
/**Programa que genera un arreglo con tamaño aleatorio de enteros aleatorios
e imprime un histograma de frecuencias
*/
package ejercicios;
 
//clase de java para generar números aleatorios:
import java.util.Random;
//sirve para representar colecciones tabulares
import java.util.HashMap;
//contiene distintas utilidades para colecciones
import java.util.Collections;
//para poder iterar sobre el mapa
import java.util.Map.Entry;
import java.util.Arrays;
 
public class Histograma{
private static String repeat(String what, int howMany){
StringBuilder buf = new StringBuilder();
for(int i=0; i<howMany; i++){
buf.append(what);
}
return buf.toString();
}
 
public static void main (String [] args){
Random generator = new Random();
//genera números aleatorios entre 0 y 20
int[] nums = new int[generator.nextInt(20)];
for(int i=0; i< nums.length; i++){
//números aleatorios entre 0 y 10
nums[i] = generator.nextInt(10);
}
//creamos una tabla que guarde el número y su cantidad de ocurrencias
//no se pueden usar tipos primitivos en este tipo de estructuras
HashMap<Integer, Integer> tabla = new HashMap<Integer, Integer>();
 
System.out.printf("Números generados: \n %s\n", Arrays.toString(nums));
 
for(int num: nums){
Integer index = new Integer(num);
if(!tabla.containsKey(index))
tabla.put(index, new Integer(1));
else
tabla.put(index, tabla.get(index)+1);
}
 
for(Entry<Integer, Integer> fila: tabla.entrySet()){
System.out.printf("%s: %s\n",fila.getKey(), repeat("*", fila.getValue().intValue()));
}
}
}

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.