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