【发布时间】:2009-12-13 00:03:35
【问题描述】:
public class Histogram
{
private int lo_;
private int hi_;
private int[] frequency_;
public Histogram(int lo, int hi)
{
lo_ = lo;
hi_ = hi;
int range = hi_-lo_+1;
frequency_ = new int[range];
for(int i =0; i <range; range++)
frequency_[i] = 0;
}
public void ReadValue()
{
Scanner in = new Scanner(System.in);
int value= in.nextInt();
while(value != -1)
{
if(value >= lo_ && value <= hi_)
{
frequency_[value - lo_]++;
value = in.nextInt();
}
}
}
private String starPrinter(int value)
{
String star = "*";
for(int i = 0; i <= value ;i++)
{
star +="*";
}
return star;
}
public String Printer()
{
String print = new String();
int range = hi_-lo_+1;
int i = 0;
while(i<range)
{
print += (lo_+i)+" : "+ starPrinter(i)+ "\n";
i++;
}
return print;
}
public int query(int value)
{
if (value >= lo_ && value <= hi_)
{
value -= lo_;
return starPrinter(value).length();
}
else
return -1;
}
public static void main(String[] args)
{
Histogram test = new Histogram(3, 9);
test.ReadValue();
}
}
我需要有关此直方图的帮助。
构造函数是由低数和高数生成的(所以如果我把 3 to 9: 这些都是它期望的数字,其他的都被忽略了)
readValue 方法将一直循环,直到用户键入 -1。意义
如果我输入3, 4, 6, 4, 6, 9 , 5, 9, 4, 10 -1... 那么它将存储
frequency[] 中的所有内容。我如何做到这一点,以便每个值都可以
在frequency[]中跟踪?
3 出现一次,4 出现 3 次,7 从未出现,9 出现两次
Printer() 会给我一个看起来像这样的直方图
(使用之前输入的数字...)
3: *
4: ***
5: *
6: **
7:
8:
9: **
如何使用频率必须打印的数字 星号出现的数字?
查询方法会询问用户他们想要的号码和 告诉他们发生了多少次:
类型 3 “3 出现 2 次”
类型 10“10 超出范围。”
我有大部分代码,我只需要帮助实现一些部分。
【问题讨论】:
-
听起来像是一个做我的家庭作业的问题