如何快速,轻松地在Java中初始化大量变量?

时间:2016-11-17 21:03:54

标签: java

所以我有一个非常基本的编码问题,我刚刚开始学习今年,我有一个代码的任务,应该是

  

翻转一个公平的硬币n次并计算它有多少头。该程序将进行m个实验然后   将结果打印为(垂直)直方图。该程序将首先要求用户输入数量   进行(m)的实验和每次实验中的硬币翻转次数(n)。 n最多可以是79   输出将是由空格和星号(*)组成的直方图,其中n + 1列(用于头数)   可以从0到n)

我已经完成了直方图的代码,但我遇到的问题是如何存储磁头数量,因为它是自己的变量。例如,如果它将硬币翻转80次并且其中40个是头部,我希望它创建一个40翻转的int,然后添加一个。我只是不知道如何初始化80个变量而不写出int = 0; int two = 0,int three = 0;直到时间结束,然后编写80 if语句,直到找到正确的整数来添加一个。有没有一种简单的方法可以做到这一点,还是应该采取不同的方法?这是代码,请温柔,字面上只有一个月左右进入一个非常基本的java类

 for(m=m; m>0; m--) { //runs m number of experiments of n coinflips, keeping track of total heads
   n = o; // when N gets set to 0 through the while loop, o resets it back to it's original so it can loop again
   while(n>0) {
     n--;
     if(random.nextBoolean()) {
       heads++;
       total++;
       /** here is where I want the number of heads saved to a
       variable, so that way later I can run a loop to put as many *'s as I need in the histogram later */

2 个答案:

答案 0 :(得分:0)

只需使用数组进行80(或n)次实验:

  

我不明白,这只会计算出有多少头/尾?除非我误解,否则这不能保存它们(即它将5个头翻转6次,4个头3次,3个头翻两次,等等)

如果您要存储头m次(m <80),您可以:

1)在生成结果时打印直方图(无需数组) OR

2)将80个结果存储在一个数组中

1的示例(无数组):

for(int x=0; x<experiments; x++){
    int heads = 0;
    for(int y=0; y<flips; y++){
        if(rnd.nextInt(2) == 0)    //assume 0 is head    
            heads ++;
    }        
    //print histogram
    for(int y=0; y<heads; y++)
        System.out.print("*");
    System.out.println();
}

2的示例(带数组):

int[] expr = new int[80];    //store results for 80 experiments
for(int x=0; x<expriments; x++)
    for(int y=0; y<flips; y++)
        if(rnd.nextInt(2) == 0)
            expr[x] ++;

答案 1 :(得分:0)

使用数组:

int n = 80;

// space for n integers, with indexes 0..n
int[] histogram = new int[n + 1]; 

for (int i = 0; i < experiments; i++) {
    // flip coin n times, counting heads
    int heads = ...;

    histogram[heads] = histogram[heads] + 1;
}

for (int i = 0; i < histogram.length; i++) {
    printStars(histogram[i]);
}

如果您不熟悉数组the Java Tutorial has a good explanation