2012-10-28 47 views
3

可能重複:
如何在Java中創建直方圖

我如何轉換成數字直方圖?柱狀圖應根據滾動的次數顯示2-12的柱狀圖。目前我的輸出像第二張圖片,但看起來像第一張。謝謝。 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"); 




} 

}

+1

我假設#/星號是#/出現次數(在你的例子中,'3:*****')。如果是這樣,只需要1)定義一個字符串12星號長,2)取直方圖每行的substring(),長度爲0..12。 PS:我會使用int []數組而不是12個單獨的變量「one」,「two」,... – paulsm4

+0

已經問過這個問題,75代表。你可以開始賞金。 – Mordechai

回答

4

下面是一些代碼的各個位,可以用來實現這一目標。

陣列

histogram[id]++; 

打印直方圖

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

在創建陣列

int[] histogram = new int[13]; 

遞增的位置這裏有一些輔助功能,以及。

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(); 
} 

代碼應根據需要進行修改。