List <int>对象将我的数组输出为System.int32 []

时间:2017-08-12 04:54:45

标签: c#

我将5个数字放入一个随机生成的数组中。每个数组只能有5组数字。根据我想要的绘图数量,我们可以说它应该打印出类似的东西。

12345 //array 1
54321 //array 2 
98765 //array 3 
45678 //array 4
34589 //array 5 

然后将其放入List对象并打印出来。

当我调试它工作的东西时,我看到列表对象填充了所有5个数组和每个元素中的数字。但是当我尝试打印出列表时,它只给我System.Int32 []输出。

这是我的代码,我写的非常简单,但我只是想让它做基本的功能,然后我打算把它清理干净。

我基本上试图模拟Mega Millions彩票亭。您可以选择所需的绘制数量,然后打印出5组随机生成的数字。最后一句话:

foreach (int[] g in list)
     Console.WriteLine(" " + g);

这应该工作我不知道什么是错的,string.join(“”,g)不起作用。它只打印出第一个数组中的第一组数字。相信我,我搜索了这个,我找不到解决方案。而且由于我通过调试获得了功能,我不想浪费时间来弄清楚它为什么不能正确打印出来。

static void Main(string[] args)
        {

            int[] getLotto = new int[5];  
            int getMega = 0; 
            Program p = new Program();
            Console.WriteLine("MEGA MILLIONS!!\n"); 
            p.result(ref getMega, ref getLotto); 

            for( int i = 0; i < 5; i++)
            {
                Console.Write(getLotto[i] + " "); 
            }

          Console.WriteLine("\n\nMEGA {0}", getMega); 
        }

        void result(ref int Mega, ref int[] storeNumArray)
        {

            var containter = new List<int>(); 
            Random ranNumber = new Random();
            int maxValue = 73;
            int x = 0;
            int y = 0;
            int temp = 0;
            int minValue = 1;
            int draw = 5;
            int[,] nDemension = new int[draw, 5];
            List<int[]> list = new List<int[]>();   
              for(int s = 0; s < draw; s++)
                for (int i = 0; i < 5; i++)
                {
                    x = ranNumber.Next(minValue, maxValue);
                    storeNumArray[i] = x;
                    if (i == 4)
                        list.Add(storeNumArray);  

                }
                while (y < 5)
                {
                    Mega = ranNumber.Next(maxValue);
                    temp = storeNumArray[y];
                    if (Mega != temp)
                    {
                        y = 5;
                        break;
                    }


                }

            foreach (int[] g in list)
                Console.WriteLine(" " + g);
        }

    }
}           

2 个答案:

答案 0 :(得分:5)

foreach (int[] g in list)
{
    Console.WriteLine(" " + g);
}

不会打印完整数组,因为在数组上隐式调用了ToString()(而不是数组的元素),试试这个:

foreach (int[] g in list)
{
    foreach(int num in g)
    {
        Console.WriteLine(" " + num); //you may want to use String.Join()
    }
}

我不确定你想要实现什么,但根据Jonathan的评论,你应该做这样的事情(再次我不确定这是否是你想要的):

foreach (int[] g in list)
{
    StringBuilder sb = new StringBuilder();
    foreach(int num in g)
    {
        sb.Append(num.ToString());
    }
    Console.WriteLine(sb.ToString());
}

答案 1 :(得分:0)

for (int s = 0; s < draw; s++)
        {
            for (int i = 0; i < 5; i++)
            {
                x = ranNumber.Next(minValue, maxValue);
                storeNumArray[i] = x;
                if (i == 4)
                {
                    list = new List<int[]>();
                    list.Add(storeNumArray);
                }

            }


            while (y < 5)
            {
                Mega = ranNumber.Next(maxValue);
                temp = storeNumArray[y];
                if (Mega != temp)
                {
                    y = 5;
                    break;
                }


            }

            foreach (int[] g in list)
            {
                StringBuilder sb = new StringBuilder();
                foreach (int num in g)
                {
                    sb.Append(' ' + num.ToString());
                }
                Console.WriteLine(sb.ToString());
            }
        }