how to create a histogram in java [duplicate]

旧街凉风 提交于 2019-12-18 09:00:41

问题


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.

    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");




}

}


回答1:


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.



来源:https://stackoverflow.com/questions/13106906/how-to-create-a-histogram-in-java

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!