为什么我的数组没有添加数字?

时间:2013-10-16 17:59:59

标签: c# arrays random

这是我的代码:

namespace Exercise6
{
    class Program
    {
        static void Main(string[] args)
        {

            OtherClass aTable = new OtherClass(); //instantiate class

            Console.WriteLine("How many rows do you want your two-dimensional array to be?");
            aTable.SRows = Console.ReadLine(); //reads input for how many rows that the user would like
            aTable.IntRows = int.Parse(aTable.SRows); //convert rows to int

            Console.WriteLine("Thanks you! How many columns would you like your two-dimensional arry to be?");
            aTable.SColumns = Console.ReadLine(); //reads input for how many columns that the user would like
            aTable.IntColumns = int.Parse(aTable.SColumns); //convert columns to int

            //set two dimensional array based upon the size that the user has requested

            int[ , ] array = new int[aTable.IntColumns, aTable.IntRows];

            Random randomArray = new Random(); //call to random class to ask for random numbers

            for (int i = 0; i < aTable.IntColumns; i++) //columns
            {
                array[i, 0] = randomArray.Next(0, 100); //for every value in each column, insert a random number
            }

            for (int y = 0; y < aTable.IntRows; y++) //rows
            {
                array[y, 0] = randomArray.Next(0, 100);
            }

            Console.WriteLine(array);


        }
    }
}

namespace Exercise6
{
    class OtherClass
    {
        private string sRows;

        public string SRows { get; set; }

        private int intRows;

        public int IntRows { get; set; }

        private string sColumns;

        public string SColumns { get; set; }

        private int intColumns;

        public int IntColumns { get; set; }

    }
}

但是,我无法弄清楚为什么我的输出(应该只是我的数组)会说:

  

System.Int32 [,]

它没有将for循环中的随机数添加到我的数组中吗?

提前感谢您的所有帮助!

4 个答案:

答案 0 :(得分:4)

当您致电Console.WriteLine(array)时,会调用array的{​​{1}}方法。由于数组不提供任何更好的实现,因此调用default ToString,它只返回其类型:ToString。您需要指定自己如何将该数组转换为System.Int32[,],例如

string

写道:

for (int i = 0; i < aTable.IntColumns; i++)
{
    for (int j = 0; j < aTable.IntRows; j++)
    {
        if (j != 0)
            Console.Write(", ");
        Console.Write(array[i, j]);
    }
    Console.WriteLine();
}

答案 1 :(得分:2)

我相信您的实际问题是:为什么大多数类型的ToString只返回类型名称,而不像返回值的String.ToString

大多数类都不会覆盖ToString方法,因此得到的默认行为只是输出类型名称。

在您的特定情况下,您可能希望迭代所有元素并打印它们。

答案 2 :(得分:1)

Console.WriteLine(数组);正在调用array.ToString()。  默认情况下,这是打印对象类型。

  

返回表示当前对象的字符串。 (继承自   对象。)

请参阅Array MSDN

您需要手动输出数组的每个条目。这可以通过循环完成,请参阅链接文章以获取示例。

答案 3 :(得分:0)

这是因为你正在编写Array对象。您需要在数组中写出每个单独的元素,或覆盖数组中的ToString()