Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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_Sorting_Bin_Generate - Fatal编程技术网

Java 如何将数组排序到';垃圾箱;,然后打印出那个箱子里有多少个数字的星星?

Java 如何将数组排序到';垃圾箱;,然后打印出那个箱子里有多少个数字的星星?,java,arrays,sorting,bin,generate,Java,Arrays,Sorting,Bin,Generate,//基本上,对于下面的所有内容,我尝试对生成的随机数进行排序,然后“排序”,然后放入存储箱,然后存储箱中有多少个数字,每个数字都会打印一个星号。最后它看起来像一个柱状图。像这样: [0,10]中的12个随机整数分为2个单元: *******7 0.5833333[5.0,10.0) *****5 0.416666[0.0,5.0] 但是它跳过了最后两种方法——generateBins和printBins。我如何根据数字(如上所述)将随机数排序到存储箱中,并为该数组存储箱中的每个数字打印一个* p

//基本上,对于下面的所有内容,我尝试对生成的随机数进行排序,然后“排序”,然后放入存储箱,然后存储箱中有多少个数字,每个数字都会打印一个星号。最后它看起来像一个柱状图。像这样:

[0,10]中的12个随机整数分为2个单元:

*******7 0.5833333[5.0,10.0)

*****5 0.416666[0.0,5.0] 但是它跳过了最后两种方法——generateBins和printBins。我如何根据数字(如上所述)将随机数排序到存储箱中,并为该数组存储箱中的每个数字打印一个*

public class BinSort {
    final int totalBins;
    final int totalRandom;
    final float widthBin;
    int [] storeNumbers;
    int [] binCount;

public BinSort (int nBins, int nSamples, int max) {
    totalBins = nBins; //total # of bins, ie 2
    totalRandom = nSamples; //total random number generated, ie 12
    widthBin = (float) (max/totalBins); ie 2


    int [] storeNumbers = new int [max];
    for (int i = 0; i < totalRandom-1; i++) {
storeNumbers[i] = Random.rand(i, max);
System.out.println(storeNumbers[i]);
}
}
void generateBins () {
    int [] binCount = new int [totalBins];
    for (int i=0; i < totalRandom-1; i++) {
    int bin = (int)(storeNumbers[i]/ totalBins);
    Math.floor(bin);
    bin  = binCount [i];
    }
}

void printBins () {
for (int i = 0; i < binCount.length - 1; i++) {
        for (int j=0; j < binCount[j]; j ++) {
           System.out.print("*");
           System.out.println(); }
    float freq = (binCount[i]/totalRandom);
    float binMin = (i * widthBin);
    float binMax = (binMin * widthBin);
    System.out.print(binCount[i] + freq + binMin + binMax);
    System.out.println();
    }
  }
}
公共类BinSort{
最终整数总箱;
最终整数随机;
最终浮箱;
整数[]个数字;
int[]二进制计数;
公共BinSort(int nBins、int nSamples、int max){
totalBins=nBins;//箱子总数,即2
totalRandom=nSamples;//生成的总随机数,即12
宽度箱=(浮动)(最大/总箱数);即2
int[]storeNumbers=新int[max];
对于(int i=0;i
在构造函数中

int [] storeNumbers = new int [max];
这里的问题是,这将创建一个与实例变量同名的新局部变量,
storeNumbers
。此外,大小应为
totalRandom
,而不是
max
。您需要创建一个
Random
对象,用于生成随机数。将其组合在一起,我们得到:

public BinSort (int nBins, int nSamples, int max) {
  totalBins = nBins; //total # of bins, ie 2
  totalRandom = nSamples; //total random number generated, ie 12
  widthBin = (float) (max/totalBins); //ie 2

  storeNumbers = new int [totalRandom];
  Random rand = new Random();  
  for (int i = 0; i < totalRandom; i++) {
    storeNumbers[i] = rand.nextInt(max);
  }
}
这将再次隐藏实例变量
binCount
storeNumber
所属的bin将由
(int)(storeNumbers[i]/widthBin)
给出,您需要将结果bin增加1

void generateBins()
{
  binCount = new int[totalBins];
  for (int i = 0; i < totalRandom; i++)
  {
    int bin = (int)(storeNumbers[i] / widthBin);
    binCount[bin] += 1;
  }
}
测试:

输出:

***** 5 0.417 0.000 5.000
******* 7 0.583 5.000 10.000
我想这就是你要找的


请确保将您的原始代码与上面的更改进行比较,并确保您了解问题所在以及更改工作的原因。

很抱歉,您到底遇到了什么问题?此类不会跳过任何内容--显示的代码中没有任何内容实例化
BinSort
对象,也不会对其调用任何方法。dri在哪里还是测试代码?
for (int j=0; j < binCount[j]; j ++) 
for (int j=0; j < binCount[i]; j ++) 
void printBins()
{
  for (int i = 0; i < binCount.length; i++)
  {
    for (int j = 0; j < binCount[i]; j++)
    {
      System.out.print("*");
    }
    float freq = (float)binCount[i] / totalRandom;
    float binMin = i * widthBin;
    float binMax = (i+1) * widthBin;
    System.out.printf(" %d %.3f %.3f %.3f\n", binCount[i], freq, binMin, binMax);
  }
}
public static void main(String[] args)
{
  BinSort bs = new BinSort(2, 12, 10);
  bs.generateBins();
  bs.printBins();
}
***** 5 0.417 0.000 5.000
******* 7 0.583 5.000 10.000