直方图频率帮助 Java
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 到 9:这些都是它期望的数字,其他任何数字都被忽略)
readValue
方法将继续循环,直到用户输入 -1
。意义 如果我输入 3, 4, 6, 4, 6, 9 , 5, 9, 4, 10 -1
... 那么它将存储 所有这些都在频率[]
中。我该如何做才能使每个值都可以 在频率[]
中跟踪?
3
出现一次,4
出现三次,7
从未出现,9
出现两次
Printer()
会给我一个看起来像这样的直方图 (使用之前输入的数字...)
3: *
4: ***
5: *
6: **
7:
8:
9: **
如何使用频率所具有的数字来打印数量 数字出现在哪些星星?
查询方法将询问用户他们想要什么号码, 告诉他们它出现了多少次:
types 3“3 出现 2 次”
types 10“10 超出范围。”
我拥有大部分代码,我只需要帮助实现某些部分。
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();
}
}
I need help on this Histogram.
The constructor is generated by low number and high number (so if I put 3
to 9: these are all the numbers it expects, anything else is ignored)
the readValue
method will keep looping until the user types -1
. Meaning
that if I type 3, 4, 6, 4, 6, 9 , 5, 9, 4, 10 -1
... then it will store
all that in the frequency[]
. How do I make it so that each value can be
tracked in the frequency[]
?
3
occurs once, 4
occurs three times, 7
never occurs, 9
occurs twice
Printer()
will make me a Histogram diagram that looks like this
(Using the numbers inputted before...)
3: *
4: ***
5: *
6: **
7:
8:
9: **
How do I use the numbers the frequency has to print the number of
stars the numbers occured in?
the query method will ask the user for what number they want and
tells them how many times it occurs:
types 3 "3 occurs 2 times"
types 10 "10 is out of range."
I have most of the code, I just need help implementing some parts.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你几乎已经完成了,还有一些愚蠢的错误。您的 starPrinter 方法打印的星星比应有的多了两颗。你应该这样写:
并且你将错误的参数传递给starPrinter。应该是这样的:
最后你要记得调用它。只需在 main 末尾添加一行即可:
现在可以了! (只要您不输入超出范围的数字即可。)
You've almost done it, there's a few silly mistakes. Your starPrinter method prints two more stars than it should. You should write this:
and you pass the wrong parameter to starPrinter. It should be this:
Finally, you have to remember to call it. Just add one more line at the end of main:
Now it works! (As long as you don't type an out of range number.)