2011-11-28 38 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])); 
}