2011-11-28 39 views
0

我給這個代碼,我想編輯的顯示方法產生類似編輯的顯示方法來產生直方圖(JAVA)

隨着規模最大的一次調整爲40

直方圖

現在我不知道我是如何正確地做到這一點的,我可以引入for循環和一些打印方法,但我不認爲這就是我應該這樣做的結果,當我這樣做時,看起來太整齊了。

public class LastDigitDistribution 

{ 

    private int[] counters; 



    /** 

    Constructs a distribution whose counters are set to zero. 

    */ 

public LastDigitDistribution() 

    { 

    counters = new int[10]; 

    } 



    /** 

    Processes values from this sequence. 

    @param seq the sequence from which to obtain the values 

    @param valuesToProcess the number of values to process 

    */ 

    public void process(Sequence seq, int valuesToProcess) 

    { 

    for (int i = 1; i <= valuesToProcess; i++) 

    { 

     int value = seq.next(); 

     int lastDigit = value % 10; 

     counters[lastDigit]++; 

    } 

    } 

    /** 

    Displays the counter values of this distribution. 

    */ 

    public void display() 

    { 

    for (int i = 0; i < counters.length; i++) 

    { 

     System.out.println(i + ": " + counters[i]); 

    } 

    } 

} 

感謝您的幫助。 :)

+2

你的輸入數據是什麼樣的?如果這是作業,請標記爲這樣。 – wespiserA

+0

問題和樣品對我來說也很像作業。 –

+0

對不起,網站上的新增功能並不知道我們假設爲此標記它。我的錯。 – user1069755

回答

0

由於代碼(數據源)和結構(顯示的調用)是不完整的,我有一個提示在顯示方法的問題:

for (int i = 0; i < counters.length; i++)  {   
    System.out.print(i + ": " + counters[i] + " ");  
    for (int j = 0 ; j < counters[i] ; j++) { 
     System.out.print('*');  
    } 
    System.out.println("");  // line feed only here 
} 
+0

謝謝你,有一個序列課,它認爲這不是很重要,我仍然困惑於如何將最大的酒吧擴展到40? – user1069755

+0

您的要求不明確。什麼決定了星星的數量? –

+0

@ user1069755查找最大數字賦予40,遍歷所有其他數據並將它們除以(最大/ 40),這與您在計算百分比(僅用40而不是100)時所做的相同。 – stacker

0

我會走這條路:

for (int i = 0; i < counters.length; i++)  {   
    System.out.println(StringUtils.repeat("*", counters[i])); 
}