繁体   English   中英

将两个数组相乘会得出错误的结果

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM