how to create a histogram in java

69,859

Here are some various bits of code you can use to accomplish this.

Create array

int[] histogram = new int[13];

Increment a position in the array

histogram[id]++;

Print histogram

System.out.println("Histogram of rolls:" );
printHistogram(histogram);

Here are some helper functions as well.

private void printHistogram(int[] array) {
     for (int range = 0; range < array.length; range++) {
        String label = range + " : ";
        System.out.println(label + convertToStars(array[range]));
    }
}

private String convertToStars(int num) {
    StringBuilder builder = new StringBuilder();
    for (int j = 0; j < num; j++) {
        builder.append('*');
    }
    return builder.toString();
}

Code should be modified as needed.

Share:
69,859
UnPatoCuacCuac
Author by

UnPatoCuacCuac

Updated on July 19, 2022

Comments

  • UnPatoCuacCuac
    UnPatoCuacCuac almost 2 years

    Possible Duplicate:
    how to convert numbers into symbols in java? for example instead of 2 to **, or 3 to *** etc.

    How can I convert numbers into a histogram ? The histogram should display the bar graphs from 2-12 based upon how many times that value was rolled. currently my output is like the second pic but is suppose to look like the first one. thanks. like this: enter image description here

        public static void main(String[] args) {
        // TODO code application logic here
        System.out.print("Please enter how many times you want to roll two dice?");
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int [] rolls = new int[n];
    
        Random r1 = new Random();
        Random r2 = new Random();
    
        int dice1;
        int dice2;
    
        int two = 0;
        int three = 0;
        int four = 0;
        int five = 0;
         int six = 0;
        int seven = 0;
        int eight = 0;
        int nine = 0;
         int ten = 0;
        int eleven = 0;
        int twelve = 0;
    
        for (int roll=0; roll < rolls.length; roll++)
        {
             dice2 = r2.nextInt(6)+1;
             dice1 = r1.nextInt(6)+1;
             System.out.println(roll + " The first dice rolled a " + dice1 + " the second dice rolled a " + dice2);
    
             int sum;
             sum = dice1 + dice2;
    
             if (sum == 2)
                 two++;
             if (sum == 3)
                 three++;
             if (sum == 4)
                 four++;
             if (sum == 5)
                 five++;
             if (sum == 6)
                 six++;
             if (sum == 7)
                 seven++;
             if (sum == 8)
                 eight++;
             if (sum == 9)
                 nine++;
             if (sum == 10)
                 ten++;
             if (sum == 11)
                 eleven++;
             if (sum == 12)
                 twelve++;
    
        }
        System.out.println("Histogram of rolls:" );  
        System.out.println("2 occurred " + two + " times");
        System.out.println("3 occurred " + three + " times");
        System.out.println("4 occurred " + four + " times");
        System.out.println("5 occurred " + five + " times");
        System.out.println("6 occurred " + six + " times");
        System.out.println("7 occurred " + seven + " times");
        System.out.println("8 occurred " + eight + " times");
        System.out.println("9 occurred " + nine + " times");
        System.out.println("10 occurred " + ten + " times");
        System.out.println("11 occurred " + eleven + " times");
        System.out.println("12 occurred " + twelve + " times");
    
    
    
    
    }
    

    }