关于C#Jagged数组动态自动递增数组数组没有正确打印值

时间:2015-04-13 10:16:52

标签: c# arrays dynamic jagged-arrays

我正在使用自动增量数组,但这种逻辑对于锯齿状数组无效:

namespace TESETER
{
    class Program
    {
        static void Main(string[] args)
        {
            int q, moj = 0;
            int[][] arr = new int[1][];
            int[][] b;
            b = arr;
            arr[0] = new int[1];
            b[0] = arr[0];
            while (moj < 3)
            {
                Console.WriteLine("interger");
                int.TryParse(Console.ReadLine(), out q);
                if (moj < 1)
                { arr[0][0] = q; moj++; }
                else
                {
                    moj++; arr[0] = new int[moj];
                    for (int i = 0; i < moj - 1; i++)
                    {
                        arr[0][i] = b[0][i];
                    }
                    arr[0][moj - 1] = q;
                    b = arr;
                    b[0] = arr[0];
                }
            }
            Console.WriteLine(arr[0][0]);
            Console.WriteLine(arr[0][1]);
            Console.WriteLine(arr[0][2]);
            Console.ReadLine();
        }
    }
}

输出:整数7整数8整数9 009

如果输入是789

,请帮助我输出789

1 个答案:

答案 0 :(得分:0)

我建议使用List<int>而不是锯齿状数组。当您向其添加新元素时,它会自动调整大小。

如果必须在此处使用锯齿状数组,请不要使用赋值来保留以前的值。请改用Array.Copy

using System;
namespace TESETER
{
    class Program
    {
        static void Main(string[] args)
    {
        int q, moj = 0;
        int[][] arr = new int[1][];
        int[][] b = new int[1][];
        // b = arr;
        // arr[0] = new int[1];
        // Array.Copy(arr[0], b[0]);
        while (moj < 3)
        {
            Console.WriteLine("interger");
            int.TryParse(Console.ReadLine(), out q);
            if (moj < 1)
            { arr[0][0] = q; moj++; }
            else
            {
                moj++; arr[0] = new int[moj];
                for (int i = 0; i < moj - 1; i++)
                {
                    arr[0][i] = b[0][i];
                }
                arr[0][moj - 1] = q;
                Array.Copy(arr, b);
                //b[0] = arr[0];
            }
        }
        Console.WriteLine(arr[0][0]);
        Console.WriteLine(arr[0][1]);
        Console.WriteLine(arr[0][2]);
        Console.ReadLine();
    }
}
}