gpt4 book ai didi

java - 直方图频率帮助 Java

转载 作者:行者123 更新时间:2023-12-01 16:09:05 30 4
gpt4 key购买 nike

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: **

如何使用频率必须打印的数字数字出现在什么星号?

查询方法将询问用户他们想要什么号码,告诉他们它发生了多少次:

类型 3“3 出现 2 次”

类型 10 “10 超出范围。”

我拥有大部分代码,我只需要帮助实现某些部分。

最佳答案

你几乎已经完成了,但有一些愚蠢的错误。您的 starPrinter 方法打印的星星比应有的多了两颗。你应该这样写:

private String starPrinter(int value)
{
String star = "";
for(int i = 0; i < value ;i++)
{
star +="*";
}
return star;
}

并且您将错误的参数传递给starPrinter。应该是这样的:

print += (lo_+i)+" : "+ starPrinter(frequency_[i])+ "\n";

最后,你必须记住调用它。只需在 main 末尾添加一行即可:

public static void main(String[] args)
{
Histogram test = new Histogram(3, 9);
test.ReadValue();
System.out.println(test.Printer()); // Add this line.
}

现在可以了! (只要您不输入超出范围的数字即可。)

关于java - 直方图频率帮助 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1895120/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com