Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.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_Arrays_Histogram - Fatal编程技术网

Java 从数组值生成非图形直方图

Java 从数组值生成非图形直方图,java,arrays,histogram,Java,Arrays,Histogram,通过starPrint方法,我需要将阵列中填充的每个数字的频率显示在直方图中,如下所示: 1=3*** 2=4**** 3=7******* 等等。它需要填充的星星数等于出现的星星数的频率!现在我得到的是数组长度的星号数 public static void main(String[] args) { int matrix[][] = new int[100][2]; for (int row = 0; row < matrix.length; row++) {

通过starPrint方法,我需要将阵列中填充的每个数字的频率显示在直方图中,如下所示:

1=3***
2=4****
3=7*******
等等。它需要填充的星星数等于出现的星星数的频率!现在我得到的是数组长度的星号数

public static void main(String[] args) {

    int matrix[][] = new int[100][2];

    for (int row = 0; row < matrix.length; row++) {
        for (int column = 0; column < matrix[row].length; column++) {
            matrix[row][column] = (int) (Math.random() * 6 + 1);
        }

    }
    int[] hist1 = frequency(matrix);

    String star = starPrint(hist1);
    for (int i = 1; i < hist1.length; i++) {
        System.out.print(" \n" + hist1[i] + star);
    }

}

public static String starPrint(int[] value) {

    String star = "";
    for (int i = 0; i < value.length; i++) {

        star += "*";
    }
    return star;
}

public static int[] frequency(int[][] matrix) {

    int[] nums = new int[7];

    for (int i = 0; i < matrix.length; i++) {
        for (int j = 0; j < matrix[i].length; j++) {
            nums[matrix[i][j]] += 1;
        }
    }
    return nums;
}
publicstaticvoidmain(字符串[]args){
整数矩阵[][]=新整数[100][2];
对于(int row=0;row
这里有一个可以指导您的in

Max_Count  : constant Integer := 1_200;
Bin_Size   : constant Integer := 100;
--
type Histogram is array (0 .. Max_Count / Bin_Size - 1) of Integer;
Graph : Histogram := (others => 0);
--
for J in Graph'Range loop --'
   TIO.Put(Label(J));
   for K in 1 .. (Graph(J) * Plot_Size) / Game_Count loop
      TIO.Put("*");
   end loop;
   TIO.New_Line;
end loop;
附录:请注意
starPrint()
始终返回相同数量的星星。每次打印
hist1[i]
的值时,都要打印出那么多的星星


附录:考虑更改<代码>星号(INT[value)< <代码> > <代码> StAdPoint(int值)< /> >

您考虑过使用<代码> map < /代码>吗?您可以遍历数组,并针对每个数字检查它当前是否是映射的键。如果是,则获取关联的值并将其递增。如果没有,请在地图上标出数字,以及到目前为止发生的次数(一次)


然后在打印柱状图时,只需遍历地图的
键集()
,并获得值。

首先,星星应该在变化,对吗?然后

String star = starPrint(hist1);
应该在这里

for (int i = 1; i < hist1.length; i++) {
        System.out.print(" \n" + hist1[i] + star);
}

这意味着您将需要随机获得的值,而不是数组的长度

for (int i = 0; i < value; i++) { 
for(inti=0;i

不是值。长度

问题是什么?:-)我需要使数组中填充的每个数字的频率显示在直方图中,例如:1=1次*等等。编辑:格式设置似乎不允许我在此处执行此操作,但它需要填充的星星数等于数字出现的频率!在主q中编辑为清晰起见,请重新格式化代码;如果不正确,请还原。这是家庭作业,所以我必须继续学习我们已经学过的内容。不幸的是,我们还没有学习Map。我想可能是这样。我建议在你完成家庭作业后,你研究一下如何使用Map完成这项工作。如果你的讲师不打算介绍J这学期ava的收藏,你自己尽快学习。这看起来很有用,但我试过了,但它试图将数组应用于int值,这不起作用。这不是可以复制和粘贴的工作代码。因为这被标记为家庭作业,所以我给出了非常接近答案的建议。你需要更改
String star=starPrint(hist1);
to
String star=starPrint(hist1[i])
使用新的
星印方法非常感谢。最后。我整天都在做这件事,我的大脑都快崩溃了。我不知道这是否真的适合我。我开始失去希望了!第三节编程课。我现在应该比这更好了,对吧?这需要时间,废纸和水。
public static String starPrint(int value) {
for (int i = 0; i < value; i++) {