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

时间:2013-12-23 10:53:12

标签: c# arrays

我只有两个简单的双值数组!我从用户那里得到输入,并且数组的大小相等(总是)。问题是,我正在使用:

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&amp; 60 并且对于阵列(entArray)0.52&amp; 0.47

但它给我的产品是:

 PROD= 
 PROD= 23.5
 PROD= 

我对c#全新,在这里遗漏了一些东西,有人能帮帮我吗?

2 个答案:

答案 0 :(得分:0)

根据您的部分代码和输入,我在这里看到三点:

1-数组的长度为3,因为你有三个输出,而你提到每个数组只提供2个数字。因此,填充数组时会出现一些错误。

2-由于prod.ToString(“#。##”)在第一次和第三次打印输出中返回空字符串,这意味着entArray [0] * freqArray [0]和entArray [2] * freqArray [2]为零(x.ToString(“#。##”)在x = 0时返回空字符串。

3-基于1和2,我的盲目猜测是你的数组填充如下:{0,50,60}和 {0.52,0.47,0},导致显示的结果。

结论:修复代码中您从用户那里获得输入的部分。您在此处提供的代码部分绝对没有问题。

答案 1 :(得分:-1)

将for循环更改为以下并尝试

for (int i = 0;i <sizeof_secondarray - 1; i++)

更新:

抱歉,我忽略了这个问题并给出了错误的建议。我使用下面的代码测试了场景,它给了我正确的答案。您是否在声明变量,特别是以下面的方式“刺激”?下面的代码可能会给你一些提示。

 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