Java 不重置临时整数

Java 不重置临时整数,java,Java,我正在使用另一个类创建一个直方图来帮助显示它,但这对我的问题并不重要。让我从下面的代码开始 public class DisplayHistogram { public static void main(String[] args) { int temp = 0; int holder = 0; int average; Random rand = new Random(); Histogram x = new Histogram(1, 20);

我正在使用另一个类创建一个直方图来帮助显示它,但这对我的问题并不重要。让我从下面的代码开始

public class DisplayHistogram {

  public static void main(String[] args) {
    int temp = 0;
    int holder = 0;
    int average;
    Random rand = new Random();
    Histogram x = new Histogram(1, 20);

    for(int i = 0; i<=10000; i++)
    {
        for(int j = 0; j<=3; j++)
        {
            temp = rand.nextInt(20) + 1;
            holder = holder + temp;
        }
        average = Math.round(holder / 3);
        x.submit(average);
    }
    System.out.println(x.toString());
 }

 }
然而,这没有帮助

我尝试了您的一些建议,使我的代码看起来像

import java.util.*;
public class DisplayHistogram {

public static void main(String[] args) {
Random rand = new Random();
Histogram x = new Histogram(1, 20);

for(int i = 0; i<=10000; i++)
{
    int temp = 0;
    int holder = 0;
    int average = 0;
    for(int j = 0; j<=3; j++)
    {
        temp = rand.nextInt(20) + 1;
        holder = holder + temp;
    }
    average = Math.round(holder / 3);
    x.submit(average);
}
System.out.println(x.toString());
}

}

这样写循环:

   for(int i = 0; i<=10000; i++)
    {
        holder = 0; // add this line
        for(int j = 0; j<=3; j++)
        {
            temp = rand.nextInt(20) + 1;
            holder = holder + temp;
        }
        average = Math.round(holder / 3);
        x.submit(average);
    }
    System.out.println(x.toString());
 }

for(int i=0;i已修复。循环四次而不是三次。for循环应该是这样的

 for(int i=0; i<=2; i++)
for(int i=0;i短答案
注意细节

你想要的答案 与另一个答案不同, 不要每次循环都初始化holder变量。 相反,将holder变量的范围最小化到循环中

  public static void main(String[] args)
  {
    int average;
    Random rand = new Random();
    Histogram x = new Histogram(1, 20);

    for (final int trialCount = 0; trialCount <= 10000; ++trialCount)
    {
        int holder = 0;

        for (final int sampleCount = 0; sampleCount <= 3; ++sampleCount)
        {
            int temp = rand.nextInt(20) + 1;
            holder += temp;
        }

        average = Math.round(holder / 3);
        x.submit(average);
    }
    System.out.println(x.toString());
 }
publicstaticvoidmain(字符串[]args)
{
整数平均;
Random rand=新的Random();
直方图x=新直方图(1,20);

对于(final int trialCount=0;trialCount在哪里重置
holder
变量?我尝试在提交语句下面重置holder变量,我在第二段代码中显示了它,但在第一段代码中没有显示。事实上,你应该在第一个gor循环中声明temp、holder和average变量,因为它们在后面没有任何用途呃for循环被执行了。另外,你提到你想要3个数字的平均值,目前是4个数字而不是3个。这是我的问题。我是个十足的白痴,循环了3次而不是4次。
 for(int i=0; i<=2; i++)
  public static void main(String[] args)
  {
    int average;
    Random rand = new Random();
    Histogram x = new Histogram(1, 20);

    for (final int trialCount = 0; trialCount <= 10000; ++trialCount)
    {
        int holder = 0;

        for (final int sampleCount = 0; sampleCount <= 3; ++sampleCount)
        {
            int temp = rand.nextInt(20) + 1;
            holder += temp;
        }

        average = Math.round(holder / 3);
        x.submit(average);
    }
    System.out.println(x.toString());
 }