Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何建立直方图?_Java - Fatal编程技术网

Java 如何建立直方图?

Java 如何建立直方图?,java,Java,我需要帮助在Java中构建一个直方图,它将获取一个数字列表,一个范围从0到9的数组,并输出每个数字的出现次数。例如,用{1,5,3,4,5,5,5,4,3,2,5,5,5,5}打印: 0 - 0 1 - 1 2 - 1 3 - 3 4 - 2 5 - 7 6 - 0 7 - 0 8 - 0 9 - 0 这是我目前掌握的代码: 导入java.util.Scanner; 公共类直方图 { 私有整数[]numCount; 公共Historogramint[]数组 { setArrayarray; }

我需要帮助在Java中构建一个直方图,它将获取一个数字列表,一个范围从0到9的数组,并输出每个数字的出现次数。例如,用{1,5,3,4,5,5,5,4,3,2,5,5,5,5}打印:

0 - 0 1 - 1 2 - 1 3 - 3 4 - 2 5 - 7 6 - 0 7 - 0 8 - 0 9 - 0 这是我目前掌握的代码:

导入java.util.Scanner; 公共类直方图 { 私有整数[]numCount; 公共Historogramint[]数组 { setArrayarray; } public void setArrayint[]数组 { numCount=数组; } 公共字符串toString { 整数计数=0; 字符串boi=;
forint x=0;x您的代码中有几个错误:第一个错误是,您没有在外部for循环中初始化count。在您的代码中,count被设置为0一次,并对每个数字递增,但它永远不会重置。 第二个是比较numCount[x]==numCount[y]。这将检查位于x位置的numCount数组中的值在数组中的频率。 然后你的字符串boi被创建了,但是你没有在它后面加上最新的一行,而是覆盖了它。所以你总是会看到最后一行x=9 以下方法应该有效:

public String toString() {
    String boi="";
    for(int x=0; x <= 9; x++) {
        int count=0;
        for (int y=0; y < numCount.length; y++) {
            if (x == numCount[y]) {
                count++;
            }
        }
        boi = boi + x + " - " + count + "\n";
    }      
    return boi;
}

您还可以使用boi+=x+-+count+\n;或StringBuilder及其append方法

我想您的意思是如果numCount[y]==XY您将在每个循环中附加到boi字符串,但在所有数字循环通过之前,您将不知道最终的直方图计数。您可能还意味着boi+=x+-+count+\n,实际附加到boi,并在y循环外执行此操作,以及在x循环内初始化count=0。这是4个逻辑错误。非常感谢!非常感谢非常好。整个周末都在努力解决这个问题,哈哈。