Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.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
C# 在Windows应用程序窗体的文本框中打印数组时出错_C# - Fatal编程技术网

C# 在Windows应用程序窗体的文本框中打印数组时出错

C# 在Windows应用程序窗体的文本框中打印数组时出错,c#,C#,这是我们教授给出的一个算法的代码。除了程序的最后一部分,一切都很顺利。我必须将统计数组的每个元素除以NumberofExperiments,然后将该值分配给另一个数组频率。但事实并非如此。分配给频率阵列的值始终为零。我已经调试了代码,数组统计包含所有元素。所以只有在节目的最后一部分才有问题。感谢您的任何帮助 public partial class Form1 : Form { public Form1() { InitializeComponent(

这是我们教授给出的一个算法的代码。除了程序的最后一部分,一切都很顺利。我必须将统计数组的每个元素除以NumberofExperiments,然后将该值分配给另一个数组频率。但事实并非如此。分配给频率阵列的值始终为零。我已经调试了代码,数组统计包含所有元素。所以只有在节目的最后一部分才有问题。感谢您的任何帮助

      public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    int[] Statistics  = new int[5];
    

    double P1;
    double P2;
    double P3;
    double P4;
    double P5;
    int NumberofExperiments;

    double SumofP;

    Random random = new Random();

    int k;
   

    private void button1_Click(object sender, EventArgs e)
    {

        P1 = Convert.ToDouble(textBox1.Text);
        P2 = Convert.ToDouble(textBox2.Text);
        P3 = Convert.ToDouble(textBox3.Text);
        P4 = Convert.ToDouble(textBox4.Text);

        NumberofExperiments = Convert.ToInt32(textBox6.Text);

        SumofP = P1 + P2 + P3 + P4;

        P5 = 1 - SumofP;

        textBox5.Text = P5.ToString();


        int i;

        for( i = 0; i <= NumberofExperiments;)
        {
            
            if (i < NumberofExperiments)
            {
                k = random.Next(0, 5);

                Statistics[k] = Statistics[k] + 1;
                i++;
                
            }

            else
            {
               double[] Frequency = new double[5]; //initializing an empty array 
                for(int j = 0; j < 5; j++)
                {
          

                    Frequency[j] = Statistics[j] / NumberofExperiments; //The Problem is here. 
                   

                    textBox7.Text = Frequency[j].ToString();
                }
                break;
               


            }
            
        }

    }
}
公共部分类表单1:表单
{
公共表格1()
{
初始化组件();
}
int[]Statistics=新int[5];
双P1;
双P2;
双P3;
双P4;
双P5;
国际实验;
双SUMPOFP;
随机=新随机();
int k;
私有无效按钮1\u单击(对象发送者,事件参数e)
{
P1=Convert.ToDouble(textBox1.Text);
P2=Convert.ToDouble(textBox2.Text);
P3=Convert.ToDouble(textBox3.Text);
P4=Convert.ToDouble(textBox4.Text);
NumberofExperiments=Convert.ToInt32(textBox6.Text);
SumofP=P1+P2+P3+P4;
P5=1-SumofP;
textBox5.Text=P5.ToString();
int i;
对于(i=0;i
  • 每个循环初始化一个新数组

  • Statistics
    的类型为
    int
    。将其转换为
    double

    for(int j = 0; j < 5; j++)
    {
        Frequency[j] = Statistics[j] / NumberofExperiments; //The Problem is here. 
        textBox7.Text = Frequency[j].ToString();
    }
    

    你正在转换成双倍,就是这样。再想想你的循环,不是在循环中循环j,而是先为i完成循环,然后为j完成循环。@bluevulture我做了,频率数组中的所有值都是0;@mikelegg不,我不能这样做。因为第二个循环在第一个循环的条件为fals时开始e、 @snehashukla我明白了问题所在。
    Statistics
    是一个类型为
    int
    的数组,因此分区会输出一个int。将
    Statistics
    更改为键入double或将其转换为double。编辑代码。@bluevulture它工作正常。但是文本框只打印频率数组的最后一个值。不是所有的值。您能帮我做些什么吗相同的?
    double[] Frequency = new double[5]; //Now its fine
    for(int j = 0; j < 5; j++)
         {
             Frequency[j] = (double)Statistics[j] / NumberofExperiments; 
                           
             textBox7.Text = textBox7.Text + " " + Frequency[j].ToString();
         }