无法在while循环中用值填充2D数组

时间:2015-03-12 14:06:29

标签: c# arrays loops sorting

我试图对某些值进行排序并将它们放入2D数组中,但我一直认为数组中的所有位置都是0。

我的代码看起来有点像这样,这是短版本。重要的是" kategori"数组和我想要做的是在每个特定位置ex [0,a]填充数组,其值为y。

class Program
{
    struct Säljare
    {            
        public int artiklar;
    }

    static void Main(string[] args)
    {
        Säljare[] s = new Säljare[6];

        for (int x = 0; x <= 5; x++)
        {                          
            Console.Write("Antal sålda artiklar: ");
            s[x].artiklar = int.Parse(Console.ReadLine());
        }

        Console.WriteLine(s.Length);

        int[,] kategori = new int[2,6];

        int a = 0;
        int b = 0;

        int y = 0;
        while (y < s.Length)
        {
            if (s[y].artiklar < 50)
            {
                kategori[0, a] = y;
                a++;
            }

            else if (50 <= s[y].artiklar)
            {
                kategori[1, b] = y;
                b++;
            }          

            y++;
        }

        Console.WriteLine("Antal");

        int z = 0;
        for (int x = 0; x < a; x++)
        {
            kategori[0, x] = z;
            Console.WriteLine(s[z].artiklar);
        }

        for (int x = 0; x < b; x++)
        {
            kategori[1, x] = z;
            Console.WriteLine(s[z].artiklar);
        }            
    }
}

1 个答案:

答案 0 :(得分:2)

根据您的修改: 问题在于你从不修改z。它始终保持为0(这会导致您仅使用0填充kategori数组)。请检查以下代码。如果您打算打印kategori,请使用我的编辑。

using System;

namespace ConsoleTest
{
    class Program
    {
        struct Säljare
        {
            public int artiklar;
        }

        static void Main(string[] args)
        {
            Säljare[] s = new Säljare[6];

            for (int x = 0; x <= 5; x++)
            {
                Console.Write("Antal sålda artiklar: ");
                s[x].artiklar = int.Parse(Console.ReadLine());
            }

            Console.WriteLine(s.Length);

            int[,] kategori = new int[2, 6];

            int a = 0;
            int b = 0;

            int y = 0;
            while (y < s.Length)
            {
                if (s[y].artiklar < 50)
                {
                    kategori[0, a] = y;
                    a++;
                }

                else if (50 <= s[y].artiklar)
                {
                    kategori[1, b] = y;
                    b++;
                }

                y++;
            }

            //Use this to print kategori
            for (a = 0; a < 2; a++)
            {
                for (b = 0; b < 6; b++)
                {
                    Console.Write("{0}\t", kategori[a, b]);
                }
                Console.WriteLine();
            }

            Console.WriteLine("Antal");

            int z = 0;
            for (int x = 0; x < a; x++)
            {
                kategori[0, x] = z; //z is always 0
                Console.WriteLine(s[z].artiklar);
            }

            for (int x = 0; x < b; x++)
            {
                kategori[1, x] = z; //z is always 0
                Console.WriteLine(s[z].artiklar);
            }
            Console.ReadKey();
        }
    }
}
相关问题