[英]Multiply two arrays gives wrong result
我只有两个简单的double值数组! 我从用户那里得到输入,数组的大小相等(总是)。 问题是,我使用以下方法将它们相乘:
int sizeof_secondarray = entArray.Length;
for (int i = 0; i <sizeof_secondarray; i++)
{
prod = freqArray[i] * entArray[i];
Console.WriteLine("PROD= " + prod.ToString("#.##"));
}
因此,用户为数组(freqArray)50和60以及数组(entArray)0.52和0.47提供输入
但是它给我的产品是:
PROD=
PROD= 23.5
PROD=
我是C#的新手,在这里严重丢失了一些东西,有人可以帮我吗?
根据您的部分代码和您的输入,我在这里看到三点:
1-数组的长度为3,因为您有三个输出,而您提到每个数组仅提供2个数字。 因此,当您填充数组时会有一些错误。
2-由于prod.ToString(“#。##”)在第一个和第三个打印输出中返回了空字符串,因此这意味着entArray [0] * freqArray [0]和entArray [2] * freqArray [2]为零(x。当x = 0)时,ToString(“#。##”)返回空字符串。
3-基于1和2,我的盲目猜测是您的数组被这样填充:{0,50,60}和{0.52,0.47,0},导致显示结果。
结论:修改代码部分,从用户那里获得输入。 您在此处提供的代码部分绝对没有问题。
将for循环更改为下面并尝试
for (int i = 0;i <sizeof_secondarray - 1; i++)
更新:
抱歉,我忽略了这个问题,并提出了错误的建议。 我已经使用下面的代码测试了场景,它给了我正确的答案。 您是否以以下方式声明变量,特别是“ prod”? 下面的代码可能会给您一些提示。
static void Main(string[] args)
{
double[] entArray = new double[] { 0.52, 0.47 };
int sizeof_secondarray = entArray.Length;
double prod;
double[] freqArray = new double[] { 50, 40};
for (int i = 0; i < sizeof_secondarray; i++)
{
prod = freqArray[i] * entArray[i];
Console.WriteLine("PROD= " + prod.ToString("#.##"));
}
Console.Read();
}
答:
PROD= 26
PROD= 18.8
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.