方法2D阵列显示数字

时间:2014-04-11 06:03:53

标签: c# arrays methods multidimensional-array

嗨,我有问题。我的代码应该显示随机数并将所有奇数加在一起,但我的问题是它只生成一堆0#。如果有人愿意帮助我,我会非常感激。

我写了很多类似的代码,但这是唯一一个只生成0的代码,我不知道它有什么问题。

    int[,] A = new int[5, 7];
    Random rand = new Random();

    private void SumOdd(int[,] array)
    {
        int sum = 0;
        int rows = array.GetLength(0);
        int cols = array.GetLength(1);

        for (int i = 0; i < rows; i++)
        {
            for (int j = 0; j < cols; j++)
            {
                if (sum % 2 != 0)
                {
                    array[i, j] = rand.Next(-100, 100);
                    sum += array[i, j];
                }
                richTextBox1.AppendText(array[i, j] + " ");
            }
        }
        richTextBox1.AppendText("The Sum of all Odd is: "+ sum.ToString());
    }

4 个答案:

答案 0 :(得分:0)

sum = 0;

if (sum % 2 != 0) 
{
  // never reaches here
  // sum % 2 is always 0 in your case
}

答案 1 :(得分:0)

我看到一个&#34;奇怪&#34;事情:首先,您使用sum初始化0。到现在为止还挺好。然后你用sum % 2 != 0测试它是否奇怪。由于sum为零,因此该标准永远不会成立,因此它永远不会进入将改变总和的范围内。

我认为你想测试奇数的新随机数,所以试试这个:

int[,] A = new int[5, 7];
Random rand = new Random();

private void SumOdd(int[,] array)
{
    int sum = 0;
    int rows = array.GetLength(0);
    int cols = array.GetLength(1);

    for (int i = 0; i < rows; i++)
    {
        for (int j = 0; j < cols; j++)
        {
            int value = rand.Next(-100, 100); // Create a new random number.
            array[i, j] = value;  // Store it in the array.
            richTextBox1.AppendText(value + " "); // Display it in the textbox.
            if (value % 2 != 0) // Test if it is odd.
                sum += value; // If so... add it to the sum.
        }
    }
    richTextBox1.AppendText("The Sum of all Odd is: "+ sum.ToString());
}

答案 2 :(得分:0)

if (sum % 2 != 0)

当代码到达此点时,sum最初为0.因此,在计算时,0/2保持为0. if中的块仅在余数不为0时执行。

array[i, j] = rand.Next(-100, 100);

在if之外,如果你想在和之前随机化数字值。

另外,你说要添加奇数;好吧,这会检查总和,而不是随机生成的数字。只是一个想法。

答案 3 :(得分:0)

我使用控制台应用程序构建它并且效果很好

 static Random rand; 
            static void Main(string[] args)
            {
                int[,] A = new int[5, 7];
              rand = new Random();

              SumOdd(ref A);                 


                Console.ReadLine();
            }

            private static void SumOdd(ref int[,] array)
            {
                int sum = 0;
                int rows = array.GetLength(0);
                int cols = array.GetLength(1);

                for (int i = 0; i < rows; i++)
                {
                    for (int j = 0; j < cols; j++)
                    {
                        array[i, j] = rand.Next(-100, 100);
                        if (array[i,j] % 2 != 0)
                        {
                            Console.WriteLine(array[i, j]);
                            sum += array[i, j];
                        }
                        Console.WriteLine(array[i, j] + " ");
                    }
                }
               Console.WriteLine("The Sum of all Odd is: " + sum.ToString());
            }